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
Jan 22, 2025 01:01Code HintsCode HintsRUSTrust-1.84.0Success132,964
Jan 22, 2025 01:01Code HintsCode HintsRUSTrust-1.84.0Success133,943
Jan 22, 2025 00:59Code HintsCode HintsRUSTrust-1.84.0Success131,338+0.27 RP
Jan 22, 2025 00:58Code HintsCode HintsRUSTrust-1.84.0Success131,798+0.09 RP
Jan 22, 2025 00:43Code HintsCode HintsRUSTrust-1.84.0Success137,448
Jan 22, 2025 00:39Code HintsCode HintsRUSTrust-1.84.0Success256,753
Jan 22, 2025 00:37Code HintsCode HintsRUSTrust-1.84.0Success133,824
Jan 22, 2025 00:35Code HintsCode HintsRUSTrust-1.84.0Success132,050
Jan 22, 2025 00:35Code HintsCode HintsRUSTrust-1.84.0Success132,171
Jan 22, 2025 00:34Code HintsCode HintsRUSTrust-1.84.0Success133,453
Jan 22, 2025 00:33Code HintsCode HintsRUSTrust-1.84.0Success134,066
Jan 22, 2025 00:33Code HintsCode HintsRUSTrust-1.84.0Success131,955+0.10 RP
Jan 22, 2025 00:32Code HintsCode HintsRUSTrust-1.84.0Success132,988
Jan 22, 2025 00:31Code HintsCode HintsRUSTrust-1.84.0Success132,540
Jan 22, 2025 00:30Code HintsCode HintsRUSTrust-1.84.0Success132,590
Jan 22, 2025 00:30Code HintsCode HintsRUSTrust-1.84.0Success132,572
Jan 22, 2025 00:29Code HintsCode HintsRUSTrust-1.84.0Success132,964
Jan 22, 2025 00:28Code HintsCode HintsRUSTrust-1.84.0Success133,800
Jan 22, 2025 00:27Code HintsCode HintsRUSTrust-1.84.0Success132,581
Jan 22, 2025 00:27Code HintsCode HintsRUSTrust-1.84.0Success132,545
Jan 22, 2025 00:25Code HintsCode HintsRUSTrust-1.84.0Success132,509
Jan 22, 2025 00:22Code HintsCode HintsRUSTrust-1.84.0Success132,528
Jan 22, 2025 00:19Code HintsCode HintsRUSTrust-1.84.0Success132,690
Jan 22, 2025 00:17Code HintsCode HintsRUSTrust-1.84.0Success132,272
Jan 22, 2025 00:11Code HintsCode HintsRUSTrust-1.84.0Success132,121+0.85 RP
Jan 21, 2025 07:42NoSIMD_C#NoSIMD_C#CSHARP9.0.1Success3,052,340
Jan 21, 2025 07:30Ian MckibbenIan MckibbenCPPg++13.2.0Success102,747
Jan 21, 2025 07:26Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 07:24Ian MckibbenIan MckibbenCPPclang++18.1.3Success102,591
Jan 21, 2025 07:19Ian MckibbenIan MckibbenCPPclang++18.1.3Success91,233
Jan 21, 2025 07:18Ian MckibbenIan MckibbenCPPclang++18.1.3Success87,047+30.88 RP
Jan 21, 2025 07:17Ian MckibbenIan MckibbenCPPclang++18.1.3Success119,086
Jan 21, 2025 07:17Ian MckibbenIan MckibbenCPPclang++18.1.3Success119,048+0.29 RP
Jan 21, 2025 07:16Ian MckibbenIan MckibbenCPPclang++18.1.3Success123,286
Jan 21, 2025 07:15Ian MckibbenIan MckibbenCPPclang++18.1.3Success119,464+1.14 RP
Jan 21, 2025 07:14Ian MckibbenIan MckibbenCPPclang++18.1.3Success121,110+0.33 RP
Jan 21, 2025 07:12Ian MckibbenIan MckibbenCPPclang++18.1.3Success121,598+5.19 RP
Jan 21, 2025 07:07Ian MckibbenIan MckibbenCPPclang++18.1.3Success129,784+1.08 RP
Jan 21, 2025 07:05Ian MckibbenIan MckibbenCPPclang++18.1.3Success131,621+41.73 RP
Jan 21, 2025 07:04Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 06:59Ian MckibbenIan MckibbenCPPclang++18.1.3Success291,967+28.33 RP
Jan 21, 2025 06:57Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 06:51Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 06:23Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 05:42Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 01:06Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 01:05Ian MckibbenIan MckibbenCPPclang++18.1.3Success1,688,253+0.02 RP
Jan 21, 2025 01:01Ian MckibbenIan MckibbenCPPclang++18.1.3Success1,694,153+1.41 RP
Jan 21, 2025 01:00Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 01:00Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 21, 2025 00:50Ian MckibbenIan MckibbenCPPclang++18.1.3Success2,224,091+0.20 RP
Jan 21, 2025 00:47alxmrcktralxmrcktrRUSTrust-1.84.0Success133,747
Jan 21, 2025 00:17alxmrcktralxmrcktrRUSTrust-1.84.0Success134,274
Jan 21, 2025 00:13alxmrcktralxmrcktrRUSTrust-1.84.0Success134,440
Jan 21, 2025 00:12alxmrcktralxmrcktrRUSTrust-1.84.0Success134,759
Jan 21, 2025 00:11alxmrcktralxmrcktrRUSTrust-1.84.0Success139,317
Jan 21, 2025 00:10alxmrcktralxmrcktrRUSTrust-1.84.0Success134,167
Jan 21, 2025 00:07alxmrcktralxmrcktrRUSTrust-1.84.0Success134,169
Jan 21, 2025 00:02alxmrcktralxmrcktrRUSTrust-1.84.0Success135,252
Jan 20, 2025 18:10Code HintsCode HintsRUSTrust-1.84.0Success134,676
Jan 20, 2025 17:31Code HintsCode HintsRUSTrust-1.84.0Success135,636
Jan 20, 2025 16:40alxmrcktralxmrcktrRUSTrust-1.84.0Success134,522
Jan 20, 2025 15:41Code HintsCode HintsRUSTrust-1.84.0Success135,033
Jan 20, 2025 15:40Code HintsCode HintsRUSTrust-1.84.0Success133,628+0.03 RP
Jan 20, 2025 14:44Code HintsCode HintsRUSTrust-1.84.0Success134,024
Jan 20, 2025 14:36Oleg KovalovOleg KovalovGOgo1.23.5Success1,385,781+0.04 RP
Jan 20, 2025 14:23Code HintsCode HintsRUSTrust-1.84.0Success134,262
Jan 20, 2025 14:15Code HintsCode HintsRUSTrust-1.84.0Success134,250
Jan 20, 2025 14:09Code HintsCode HintsRUSTrust-1.84.0Success135,721
Jan 20, 2025 14:08Code HintsCode HintsRUSTrust-1.84.0Success133,683+0.01 RP
Jan 20, 2025 14:04Code HintsCode HintsRUSTrust-1.84.0Success134,848
Jan 20, 2025 14:01Code HintsCode HintsRUSTrust-1.84.0Success134,026
Jan 20, 2025 13:58Code HintsCode HintsRUSTrust-1.84.0Success137,743
Jan 20, 2025 13:53Code HintsCode HintsRUSTrust-1.84.0Success139,048
Jan 20, 2025 13:51Code HintsCode HintsRUSTrust-1.84.0Success137,678
Jan 20, 2025 13:45Code HintsCode HintsRUSTrust-1.84.0Success133,929
Jan 20, 2025 13:44Oleg KovalovOleg KovalovCPPclang++18.1.3Success2,007,200
Jan 20, 2025 13:43Code HintsCode HintsRUSTrust-1.84.0Success133,902
Jan 20, 2025 13:38Code HintsCode HintsRUSTrust-1.84.0Success135,472
Jan 20, 2025 13:33alxmrcktralxmrcktrRUSTrust-1.84.0Success133,697+0.47 RP
Jan 20, 2025 13:28Code HintsCode HintsRUSTrust-1.84.0Error
Jan 20, 2025 13:27Code HintsCode HintsRUSTrust-1.84.0Error
Jan 20, 2025 13:24alxmrcktralxmrcktrRUSTrust-1.84.0Success134,941
Jan 20, 2025 13:22Code HintsCode HintsRUSTrust-1.84.0Success135,771
Jan 20, 2025 13:21alxmrcktralxmrcktrRUSTrust-1.84.0Success136,447
Jan 20, 2025 13:20Code HintsCode HintsRUSTrust-1.84.0Success137,667
Jan 20, 2025 13:10Code HintsCode HintsRUSTrust-1.84.0Success133,695+0.03 RP
Jan 20, 2025 13:09Code HintsCode HintsRUSTrust-1.84.0Success133,741+0.03 RP
Jan 20, 2025 13:08alxmrcktralxmrcktrRUSTrust-1.84.0Success135,033
Jan 20, 2025 13:03Code HintsCode HintsRUSTrust-1.84.0Success133,788+1.01 RP
Jan 20, 2025 13:02alxmrcktralxmrcktrRUSTrust-1.84.0Success135,978
Jan 20, 2025 12:57alxmrcktralxmrcktrRUSTrust-1.84.0Success135,184
Jan 20, 2025 12:54alxmrcktralxmrcktrRUSTrust-1.84.0Success134,781
Jan 20, 2025 12:51Code HintsCode HintsRUSTrust-1.84.0Success136,224
Jan 20, 2025 12:50alxmrcktralxmrcktrRUSTrust-1.84.0Success134,541+0.13 RP
Jan 20, 2025 12:47Code HintsCode HintsRUSTrust-1.84.0Success137,447
Jan 20, 2025 12:45alxmrcktralxmrcktrRUSTrust-1.84.0Success134,778+0.03 RP
Jan 20, 2025 12:42Code HintsCode HintsRUSTrust-1.84.0Success136,060
Jan 20, 2025 12:38alxmrcktralxmrcktrRUSTrust-1.84.0Success135,347
Jan 20, 2025 12:24Code HintsCode HintsRUSTrust-1.84.0Success140,248