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
Jun 28, 2026 15:00Victor MerckléVictor MerckléCPPg++14.2.0Success3,391
Jun 28, 2026 14:55Victor MerckléVictor MerckléCPPg++14.2.0Success37,231
Jun 28, 2026 14:50Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 24, 2026 22:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 24, 2026 22:14Victor MerckléVictor MerckléCPPg++14.2.0Success3,160
Jun 24, 2026 22:09Victor MerckléVictor MerckléCPPg++14.2.0Success3,322
Jun 24, 2026 22:04Victor MerckléVictor MerckléCPPg++14.2.0Success38,546
Jun 24, 2026 21:59Victor MerckléVictor MerckléCPPg++14.2.0Success3,394
Jun 24, 2026 21:54Victor MerckléVictor MerckléCPPg++14.2.0Success3,577
Jun 24, 2026 21:48Victor MerckléVictor MerckléCPPg++14.2.0Success3,606
Jun 22, 2026 18:53Code HintsCode HintsGOgo1.26.4Error
Jun 22, 2026 18:50Code HintsCode HintsGOgo1.26.4Error
Jun 22, 2026 18:47Code HintsCode HintsGOgo1.26.4Error
Jun 22, 2026 17:32Code HintsCode HintsGOgo1.26.2Error
Jun 22, 2026 17:11Code HintsCode HintsRUSTrust-1.96.0Success2,994
Jun 22, 2026 16:45Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 16:33Code HintsCode HintsCPPg++14.2.0Success2,824+526.88 RP
Jun 22, 2026 15:22Code HintsCode HintsCPPg++14.2.0Success3,243
Jun 22, 2026 15:19Code HintsCode HintsCPPg++13.3.0Error
Jun 22, 2026 15:15Code HintsCode HintsCPPclang++20.1.2Error
Jun 22, 2026 15:11Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 15:06Code HintsCode HintsCPPg++14.2.0Error
Jun 22, 2026 15:00Code HintsCode HintsRUSTrust-1.96.0Success2,958+116.80 RP
Jun 22, 2026 14:58Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 14:44Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 14:40Code HintsCode HintsRUSTrust-1.96.0Success3,010+144.68 RP
Jun 22, 2026 14:37Code HintsCode HintsRUSTrust-1.96.0Success3,077+244.40 RP
Jun 22, 2026 14:33Code HintsCode HintsRUSTrust-1.96.0Success3,303+321.92 RP
Jun 22, 2026 14:31Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 14:23Code HintsCode HintsRUSTrust-1.96.0Success3,696+99.42 RP
Jun 22, 2026 14:19Code HintsCode HintsRUSTrust-1.96.0Success3,837+79.67 RP
Jun 22, 2026 14:02Code HintsCode HintsRUSTrust-1.85.1Error
Jun 22, 2026 13:57Code HintsCode HintsRUSTrust-1.85.1Error
Jun 22, 2026 13:37Code HintsCode HintsRUSTrust-1.85.1Error
Jun 22, 2026 13:22Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 13:11Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 13:10Code HintsCode HintsRUSTrust-1.85.1Error
Jun 22, 2026 12:59Code HintsCode HintsRUSTrust-1.85.1Error
Jun 22, 2026 12:56Code HintsCode HintsRUSTrust-1.85.1Error
Jun 22, 2026 12:48Code HintsCode HintsRUSTrust-1.85.1Success3,958+893.88 RP
Jun 22, 2026 12:22Code HintsCode HintsRUSTrust-1.85.1Success6,125+699.12 RP
Jun 22, 2026 11:57Code HintsCode HintsRUSTrust-1.85.1Success10,712+668.73 RP
Jun 22, 2026 11:19Code HintsCode HintsRUSTrust-1.85.1Success38,698
Jun 22, 2026 11:19Code HintsCode HintsRUSTrust-1.85.1Success38,498
Jun 22, 2026 10:31Code HintsCode HintsRUSTrust-1.85.1Success43,108
Jun 21, 2026 19:58A_ShamanA_ShamanCPPg++10.5.0Success272,250
Jun 21, 2026 19:56A_ShamanA_ShamanCPPg++10.5.0Success263,551+1.41 RP
Jun 21, 2026 19:55A_ShamanA_ShamanCPPg++10.5.0Success275,182
Jun 21, 2026 19:51A_ShamanA_ShamanCPPg++10.5.0Success276,931
Jun 21, 2026 19:49A_ShamanA_ShamanCPPg++10.5.0Success274,108
Jun 21, 2026 19:47A_ShamanA_ShamanCPPg++10.5.0Success273,720+0.81 RP
Jun 21, 2026 19:45A_ShamanA_ShamanCPPg++10.5.0Success280,815
Jun 21, 2026 19:42A_ShamanA_ShamanCPPg++10.5.0Success279,913+0.68 RP
Jun 21, 2026 19:38A_ShamanA_ShamanCPPg++10.5.0Success419,051
Jun 21, 2026 19:35A_ShamanA_ShamanCPPg++10.5.0Success429,118
Jun 21, 2026 04:30Zhou180Zhou180RUSTrust-1.95.0Success3,782+869.17 RP
Jun 21, 2026 04:20Zhou180Zhou180RUSTrust-1.95.0Success5,755
Jun 21, 2026 04:15Zhou180Zhou180RUSTrust-1.95.0Success5,825
Jun 21, 2026 04:11Zhou180Zhou180RUSTrust-1.95.0Success5,677
Jun 20, 2026 18:37A_ShamanA_ShamanCPPg++10.5.0Success408,455
Jun 20, 2026 18:33A_ShamanA_ShamanCPPg++10.5.0Success335,618
Jun 20, 2026 18:29A_ShamanA_ShamanCPPg++10.5.0Success400,050
Jun 20, 2026 18:22A_ShamanA_ShamanCPPg++10.5.0Success309,913
Jun 20, 2026 18:19A_ShamanA_ShamanCPPg++10.5.0Success285,339+35.05 RP
Jun 20, 2026 17:47Zhou180Zhou180RUSTrust-1.95.0Success5,724
Jun 20, 2026 17:40Zhou180Zhou180RUSTrust-1.95.0Success5,913
Jun 20, 2026 17:14Zhou180Zhou180RUSTrust-1.95.0Success5,960
Jun 20, 2026 17:09Zhou180Zhou180RUSTrust-1.95.0Success5,781
Jun 20, 2026 17:05Zhou180Zhou180RUSTrust-1.95.0Success5,634+17.78 RP
Jun 20, 2026 16:54Zhou180Zhou180RUSTrust-1.95.0Success5,777
Jun 20, 2026 16:28Zhou180Zhou180RUSTrust-1.95.0Success5,691+81.56 RP
Jun 20, 2026 15:45Zhou180Zhou180RUSTrust-1.95.0Success44,562
Jun 20, 2026 15:18Zhou180Zhou180RUSTrust-1.95.0Success6,125
Jun 20, 2026 07:46A_ShamanA_ShamanCPPg++10.5.0Error
Jun 20, 2026 06:14Zhou180Zhou180RUSTrust-1.95.0Success6,146
Jun 20, 2026 03:33Zhou180Zhou180RUSTrust-1.95.0Error
Jun 19, 2026 16:02Zhou180Zhou180RUSTrust-1.95.0Success44,374
Jun 19, 2026 15:48Zhou180Zhou180RUSTrust-1.95.0Success6,093
Jun 19, 2026 15:08Victor MerckléVictor MerckléCPPg++14.2.0Success4,993
Jun 19, 2026 15:03Victor MerckléVictor MerckléCPPg++14.2.0Success3,272
Jun 19, 2026 14:58Victor MerckléVictor MerckléCPPg++14.2.0Success3,281
Jun 19, 2026 14:56Zhou180Zhou180RUSTrust-1.95.0Success5,968+1'390.36 RP
Jun 19, 2026 14:53Victor MerckléVictor MerckléCPPg++14.2.0Success3,244
Jun 19, 2026 06:02Victor MerckléVictor MerckléCPPg++14.2.0Success3,298
Jun 19, 2026 05:54Victor MerckléVictor MerckléCPPg++14.2.0Success3,317
Jun 18, 2026 21:38Victor MerckléVictor MerckléCPPg++14.2.0Success3,253
Jun 18, 2026 21:32Victor MerckléVictor MerckléCPPg++14.2.0Success3,839
Jun 18, 2026 21:27Victor MerckléVictor MerckléCPPg++14.2.0Success3,244
Jun 18, 2026 21:22Victor MerckléVictor MerckléCPPg++14.2.0Success5,258
Jun 18, 2026 14:16Victor MerckléVictor MerckléCPPg++14.2.0Success38,227
Jun 18, 2026 14:11Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 14:06Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 14:01Victor MerckléVictor MerckléCPPg++14.2.0Success3,322
Jun 18, 2026 13:54Victor MerckléVictor MerckléCPPg++14.2.0Success3,477
Jun 18, 2026 03:32Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:27Victor MerckléVictor MerckléCPPg++14.2.0Success4,968
Jun 18, 2026 03:22Victor MerckléVictor MerckléCPPg++14.2.0Success3,372
Jun 18, 2026 03:17Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:12Victor MerckléVictor MerckléCPPg++14.2.0Success3,289
Jun 18, 2026 02:58Victor MerckléVictor MerckléCPPg++14.2.0Success38,210