Order book Yuriy Lyfenko

Simulate a sell-side order book and calculate the cost of a final purchase as fast as possible.

Input

1,000,000 order updates on STDIN, one per line:

  • + <price> <size> – add a new sell order
  • - <position> – delete the order at the given position
  • = <size> – buy <size> shares from the top of the order book

After all updates are processed, buy 1,000 shares from the top of the order book.

Output

Print the total cost of the final 1,000-share purchase to STDOUT.

Order Book Rules

Orders are sorted by price ascending (lower is better). Orders at the same price are sorted by arrival time (earlier first). Position 0 is the best (lowest-price) offer.

The = (buy) operation consumes shares starting from position 0. If an order is fully consumed, it is removed from the book.

Example

Input Order book state
+ 1137 100 (1137,100)
+ 1130 10 (1130,10), (1137,100)
+ 1130 50 (1130,10), (1130,50), (1137,100)
- 0 (1130,50), (1137,100)
+ 1150 200 (1130,50), (1137,100), (1150,200)
= 200 (1150,150)

Total cost of the last buy: 50 * 1130 + 100 * 1137 + 50 * 1150.

Date AuthorLanguageStatus Score
Mar 29, 2025 23:17Code HintsCode HintsRUSTrust-1.85.1Success110,719
Mar 29, 2025 23:17Code HintsCode HintsRUSTrust-1.85.1Success110,697
Mar 29, 2025 23:16Code HintsCode HintsRUSTrust-1.85.1Success109,709
Mar 29, 2025 23:16Code HintsCode HintsRUSTrust-1.85.1Success109,403
Mar 29, 2025 23:15Code HintsCode HintsRUSTrust-1.85.1Success110,379
Mar 29, 2025 23:13Code HintsCode HintsRUSTrust-1.85.1Error
Mar 29, 2025 23:13Code HintsCode HintsRUSTrust-1.85.1Success113,509
Mar 29, 2025 23:12Code HintsCode HintsRUSTrust-1.85.1Success112,203
Mar 29, 2025 23:11Code HintsCode HintsRUSTrust-1.85.1Success109,852
Mar 29, 2025 23:10Code HintsCode HintsRUSTrust-1.85.1Success110,069
Mar 29, 2025 23:09Code HintsCode HintsRUSTrust-1.85.1Success110,336
Mar 29, 2025 23:02Code HintsCode HintsRUSTrust-1.85.1Success110,959
Mar 29, 2025 23:01Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success166,971
Mar 29, 2025 22:59Code HintsCode HintsRUSTrust-1.85.1Success142,855
Mar 29, 2025 22:58Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 29, 2025 22:58Code HintsCode HintsRUSTrust-1.85.1Success146,729
Mar 29, 2025 22:54Code HintsCode HintsRUSTrust-1.85.1Success142,093
Mar 29, 2025 22:51Code HintsCode HintsRUSTrust-1.85.1Error
Mar 29, 2025 22:36Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 29, 2025 22:34Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 29, 2025 21:02Code HintsCode HintsRUSTrust-1.85.1Success111,150
Mar 29, 2025 20:32Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Mar 29, 2025 20:32Code HintsCode HintsRUSTrust-1.85.1Success115,943
Mar 29, 2025 20:23Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Success1,297,386
Mar 29, 2025 20:21Mikhail ShirokovMikhail ShirokovCPPclang++18.1.3Error
Mar 29, 2025 20:12Mikhail ShirokovMikhail ShirokovCPPclang++18.1.3Error
Mar 29, 2025 20:08Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Success1,264,210+2.16 RP
Mar 29, 2025 20:07Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Mar 29, 2025 19:55Code HintsCode HintsRUSTrust-1.85.1Success111,350
Mar 29, 2025 19:54Mikhail ShirokovMikhail ShirokovCPPg++13.2.0Error
Mar 29, 2025 17:46Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success644,978
Mar 29, 2025 17:46Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success645,116
Mar 29, 2025 17:43Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 29, 2025 17:42Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 29, 2025 17:42korey-skorey-sRUSTrust-1.84.0Error
Mar 29, 2025 17:41Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 29, 2025 12:36Daniel HarrisDaniel HarrisRUSTrust-1.84.1Error
Mar 29, 2025 01:42Emanuele BolognesiEmanuele BolognesiCPPclang++18.1.3Success1,255,890+7.96 RP
Mar 29, 2025 00:24Code HintsCode HintsRUSTrust-1.85.1Success113,224
Mar 29, 2025 00:20Code HintsCode HintsRUSTrust-1.85.1Success112,695
Mar 29, 2025 00:19Code HintsCode HintsRUSTrust-1.85.1Success115,660
Mar 29, 2025 00:18Code HintsCode HintsRUSTrust-1.85.1Error
Mar 29, 2025 00:14Code HintsCode HintsRUSTrust-1.85.1Success113,638
Mar 29, 2025 00:14Code HintsCode HintsRUSTrust-1.85.1Success112,686
Mar 29, 2025 00:13Code HintsCode HintsRUSTrust-1.85.1Success113,336
Mar 29, 2025 00:06undenuicapundenuicapRUSTrust-1.84.1Success112,367
Mar 28, 2025 23:58Code HintsCode HintsRUSTrust-1.85.1Success111,509
Mar 28, 2025 20:37korey-skorey-sRUSTrust-1.85.1Error
Mar 28, 2025 15:48Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:47Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:43Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:37Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:36Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:35Code HintsCode HintsRUSTrust-1.85.1Success211,345
Mar 28, 2025 15:30Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:29Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:28Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:28Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:27Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:27Code HintsCode HintsRUSTrust-1.85.1Success521,621
Mar 28, 2025 15:26Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:26Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:25Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:25Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:24Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:24Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:24Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:23Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:22Code HintsCode HintsRUSTrust-1.85.1Error
Mar 28, 2025 15:18Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:17Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:16Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:15Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:15Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:12Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:11Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:10Rafe LepreRafe LepreCPPclang++18.1.3Error
Mar 28, 2025 15:10Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:09Rafe LepreRafe LepreCPPclang++18.1.3Error
Mar 28, 2025 15:08Rafe LepreRafe LepreCPPclang++18.1.3Error
Mar 28, 2025 15:06Rafe LepreRafe LepreCPPclang++18.1.3Error
Mar 28, 2025 15:03Rafe LepreRafe LepreCPPclang++18.1.3Error
Mar 28, 2025 15:03Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:01Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 15:00Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:58Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:56Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:55Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:54Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:53Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:52Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:51Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:50Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:49Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:45Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:44Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:43Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:43Louis PonetLouis PonetRUSTrust-1.85.1Error
Mar 28, 2025 14:22Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Mar 28, 2025 12:19Joad NacerJoad NacerCPPg++13.2.0Error