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 21, 2026 16:29Dominique GarmierDominique GarmierRUSTrust-1.94.0Success166,598
Mar 21, 2026 16:28Dominique GarmierDominique GarmierRUSTrust-1.94.0Error
Mar 21, 2026 14:57DmtryDmtryRUSTrust-1.94.0Success106,129
Mar 21, 2026 14:45DmtryDmtryRUSTrust-1.94.0Success102,864
Mar 21, 2026 14:22Dominique GarmierDominique GarmierRUSTrust-1.94.0Error
Mar 21, 2026 14:18DmtryDmtryRUSTrust-1.94.0Error
Mar 21, 2026 14:09DmtryDmtryRUSTrust-1.94.0Success71,328
Mar 21, 2026 13:45DmtryDmtryRUSTrust-1.94.0Success52,245
Mar 21, 2026 13:32DmtryDmtryRUSTrust-1.94.0Success48,912
Mar 21, 2026 13:08DmtryDmtryRUSTrust-1.94.0Success88,522
Mar 21, 2026 13:00DmtryDmtryRUSTrust-1.94.0Success101,466
Mar 21, 2026 12:58DmtryDmtryRUSTrust-1.94.0Success45,517
Mar 21, 2026 12:30DmtryDmtryRUSTrust-1.94.0Error
Mar 21, 2026 11:19Dominique GarmierDominique GarmierRUSTrust-1.94.0Success579,009
Mar 21, 2026 10:49Dominique GarmierDominique GarmierCSHARP9.0.14Success273,621
Mar 21, 2026 10:05Dominique GarmierDominique GarmierZIG0.13.0Success3,465,479
Mar 21, 2026 09:43Dominique GarmierDominique GarmierZIG0.13.0Error
Mar 21, 2026 09:28Dominique GarmierDominique GarmierZIG0.13.0Error
Mar 21, 2026 05:20Josu San MartinJosu San MartinCPPg++13.3.0Success3,569+42.52 RP
Mar 21, 2026 05:15olliecrowolliecrowRUSTrust-1.93.0Success7,217
Mar 21, 2026 02:57Dominique GarmierDominique GarmierCPPg++13.3.0Success17,733
Mar 21, 2026 02:57Dominique GarmierDominique GarmierCPPclang++18.1.3Success17,805
Mar 21, 2026 02:56Dominique GarmierDominique GarmierCPPg++13.3.0Success113,705
Mar 21, 2026 02:53Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 21, 2026 02:17Dominique GarmierDominique GarmierCPPg++13.3.0Success17,721
Mar 21, 2026 02:00Dominique GarmierDominique GarmierCPPg++13.3.0Success19,786
Mar 21, 2026 01:25DmtryDmtryRUSTrust-1.94.0Success44,669
Mar 21, 2026 01:08DmtryDmtryRUSTrust-1.94.0Success45,469
Mar 21, 2026 00:38DmtryDmtryRUSTrust-1.94.0Success46,031
Mar 21, 2026 00:25DmtryDmtryRUSTrust-1.94.0Success45,772
Mar 21, 2026 00:15DmtryDmtryRUSTrust-1.94.0Success44,221+4.58 RP
Mar 21, 2026 00:14Dominique GarmierDominique GarmierGOgo1.26.1Success19,564
Mar 21, 2026 00:14Dominique GarmierDominique GarmierGOgo1.26.1Error
Mar 21, 2026 00:07DmtryDmtryRUSTrust-1.94.0Success46,471
Mar 21, 2026 00:06Dominique GarmierDominique GarmierCPPg++13.3.0Success14,988
Mar 20, 2026 23:58DmtryDmtryRUSTrust-1.94.0Success45,136+4.56 RP
Mar 20, 2026 23:44DmtryDmtryRUSTrust-1.94.0Success46,084+3.94 RP
Mar 20, 2026 23:40DmtryDmtryRUSTrust-1.94.0Error
Mar 20, 2026 23:16DmtryDmtryRUSTrust-1.94.0Success47,512
Mar 20, 2026 23:13DmtryDmtryRUSTrust-1.94.0Error
Mar 20, 2026 23:07DmtryDmtryRUSTrust-1.94.0Error
Mar 20, 2026 22:52DmtryDmtryRUSTrust-1.94.0Success50,062
Mar 20, 2026 22:16DmtryDmtryRUSTrust-1.94.0Success47,491
Mar 20, 2026 22:07DmtryDmtryRUSTrust-1.94.0Success51,190
Mar 20, 2026 21:50DmtryDmtryRUSTrust-1.94.0Success92,131
Mar 20, 2026 21:40DmtryDmtryRUSTrust-1.94.0Success119,009
Mar 20, 2026 19:00Dominique GarmierDominique GarmierGOgo1.26.1Error
Mar 20, 2026 14:44Dominique GarmierDominique GarmierCPPclang++18.1.3Success19,188
Mar 20, 2026 12:05Dominique GarmierDominique GarmierCPPclang++18.1.3Success19,136
Mar 20, 2026 12:04Dominique GarmierDominique GarmierCPPclang++18.1.3Success19,962
Mar 20, 2026 11:50Dominique GarmierDominique GarmierCPPg++13.3.0Success19,822
Mar 20, 2026 11:21Dominique GarmierDominique GarmierCPPg++13.3.0Success20,372
Mar 20, 2026 07:51Dominique GarmierDominique GarmierCPPg++13.3.0Success19,760
Mar 20, 2026 07:49Dominique GarmierDominique GarmierCPPg++13.3.0Success18,834
Mar 20, 2026 07:47Dominique GarmierDominique GarmierCPPg++13.3.0Success20,147
Mar 20, 2026 00:20Dominique GarmierDominique GarmierCPPclang++18.1.3Success45,666
Mar 20, 2026 00:20Dominique GarmierDominique GarmierCPPclang++18.1.3Success17,716
Mar 19, 2026 15:47DmtryDmtryRUSTrust-1.94.0Success48,095
Mar 19, 2026 15:16DmtryDmtryRUSTrust-1.94.0Success46,936+19.28 RP
Mar 19, 2026 14:43DmtryDmtryRUSTrust-1.94.0Success51,605+52.67 RP
Mar 19, 2026 14:31DmtryDmtryRUSTrust-1.94.0Success71,502
Mar 19, 2026 14:27DmtryDmtryRUSTrust-1.94.0Error
Mar 19, 2026 14:21DmtryDmtryRUSTrust-1.94.0Error
Mar 19, 2026 14:04DmtryDmtryRUSTrust-1.94.0Success71,438
Mar 19, 2026 13:27DmtryDmtryRUSTrust-1.94.0Success70,869+0.80 RP
Mar 19, 2026 12:15Dominique GarmierDominique GarmierCPPg++13.3.0Success17,836
Mar 19, 2026 10:49Dominique GarmierDominique GarmierCPPg++13.3.0Success40,812
Mar 19, 2026 10:48Dominique GarmierDominique GarmierCPPg++13.3.0Success18,495
Mar 19, 2026 10:47Dominique GarmierDominique GarmierCPPclang++18.1.3Success17,910
Mar 19, 2026 06:30Dominique GarmierDominique GarmierCPPg++13.3.0Success20,640
Mar 19, 2026 05:09DmtryDmtryRUSTrust-1.94.0Success71,271+0.37 RP
Mar 19, 2026 05:03DmtryDmtryRUSTrust-1.94.0Success72,495
Mar 19, 2026 04:30Dominique GarmierDominique GarmierCPPg++13.3.0Success12,407
Mar 19, 2026 03:57DmtryDmtryRUSTrust-1.94.0Success71,457+13.70 RP
Mar 19, 2026 03:40Dominique GarmierDominique GarmierCPPg++13.3.0Success13,081
Mar 19, 2026 03:40Dominique GarmierDominique GarmierCPPg++13.3.0Success12,271
Mar 19, 2026 03:34Dominique GarmierDominique GarmierCPPclang++18.1.3Success12,579
Mar 19, 2026 03:32Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 19, 2026 03:30Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 19, 2026 00:44Dominique GarmierDominique GarmierCPPclang++18.1.3Success17,252
Mar 18, 2026 23:02DmtryDmtryRUSTrust-1.94.0Success81,676
Mar 18, 2026 22:38Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success3,683
Mar 18, 2026 22:22Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success3,900
Mar 18, 2026 22:07DmtryDmtryRUSTrust-1.94.0Success82,105
Mar 18, 2026 20:54DmtryDmtryRUSTrust-1.94.0Success80,247
Mar 18, 2026 20:35DmtryDmtryRUSTrust-1.94.0Success81,153
Mar 18, 2026 20:29Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success5,271
Mar 18, 2026 20:28Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Mar 18, 2026 20:27Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success5,807
Mar 18, 2026 20:15Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success3,903
Mar 18, 2026 20:14Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success4,374
Mar 18, 2026 20:05Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success4,453
Mar 18, 2026 19:57DmtryDmtryRUSTrust-1.94.0Success79,210+16.56 RP
Mar 18, 2026 19:36DmtryDmtryRUSTrust-1.94.0Success91,169+1.49 RP
Mar 18, 2026 19:32Yuriy LyfenkoYuriy LyfenkoCPPg++13.3.0Success50,979
Mar 18, 2026 19:07DmtryDmtryRUSTrust-1.94.0Success94,869
Mar 18, 2026 18:46DmtryDmtryRUSTrust-1.94.0Success92,428+2.98 RP
Mar 18, 2026 18:44DmtryDmtryRUSTrust-1.94.0Success95,048+1.91 RP
Mar 18, 2026 18:20DmtryDmtryRUSTrust-1.94.0Success96,805+1.92 RP
Mar 18, 2026 17:57DmtryDmtryRUSTrust-1.94.0Success99,140