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 22:51DmtryDmtryRUSTrust-1.94.0Success198,012
Mar 21, 2026 22:35DmtryDmtryRUSTrust-1.94.0Success206,814
Mar 21, 2026 22:28DmtryDmtryRUSTrust-1.94.0Success54,976
Mar 21, 2026 22:22DmtryDmtryRUSTrust-1.94.0Success108,726
Mar 21, 2026 22:13DmtryDmtryRUSTrust-1.94.0Success47,240
Mar 21, 2026 22:08DmtryDmtryRUSTrust-1.94.0Success49,240
Mar 21, 2026 22:02DmtryDmtryRUSTrust-1.94.0Success79,757
Mar 21, 2026 21:43DmtryDmtryRUSTrust-1.94.0Success4,898,745
Mar 21, 2026 21:27DmtryDmtryRUSTrust-1.94.0Success78,216
Mar 21, 2026 21:11DmtryDmtryRUSTrust-1.94.0Success482,007
Mar 21, 2026 20:47DmtryDmtryRUSTrust-1.94.0Success46,376
Mar 21, 2026 20:35DmtryDmtryRUSTrust-1.94.0Success116,628
Mar 21, 2026 20:04DmtryDmtryRUSTrust-1.94.0Success49,802
Mar 21, 2026 20:01Dominique GarmierDominique GarmierGOgo1.26.1Success138,167
Mar 21, 2026 20:01Dominique GarmierDominique GarmierGOgo1.26.1Error
Mar 21, 2026 20:00Dominique GarmierDominique GarmierGOgo1.26.1Error
Mar 21, 2026 19:58Dominique GarmierDominique GarmierGOgo1.26.1Error
Mar 21, 2026 19:40olliecrowolliecrowGOgo1.26.1Success9,336
Mar 21, 2026 19:24olliecrowolliecrowCSHARP9.0.14Error
Mar 21, 2026 19:14olliecrowolliecrowRUSTrust-1.93.0Error
Mar 21, 2026 18:55olliecrowolliecrowCPPg++13.3.0Error
Mar 21, 2026 17:28Dominique GarmierDominique GarmierRUSTrust-1.94.0Success16,034
Mar 21, 2026 16:48Dominique GarmierDominique GarmierRUSTrust-1.94.0Success168,166
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