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 22, 2026 23:02olliecrowolliecrowRUSTrust-1.93.0Success31,347
Mar 22, 2026 23:02DmtryDmtryRUSTrust-1.94.0Success5,293+118.44 RP
Mar 22, 2026 23:02olliecrowolliecrowCPPg++13.3.0Success6,067
Mar 22, 2026 23:00DmtryDmtryRUSTrust-1.94.0Error
Mar 22, 2026 22:41Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 22, 2026 22:41Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 22, 2026 22:27DmtryDmtryRUSTrust-1.94.0Success5,647+1'544.19 RP
Mar 22, 2026 21:04DmtryDmtryRUSTrust-1.94.0Success44,622
Mar 22, 2026 20:24DmtryDmtryRUSTrust-1.94.0Success45,276
Mar 22, 2026 19:53Dominique GarmierDominique GarmierZIG0.13.0Success474,347
Mar 22, 2026 19:29Dominique GarmierDominique GarmierGOgo1.26.1Success22,366
Mar 22, 2026 18:49Dominique GarmierDominique GarmierCSHARP9.0.14Success60,345
Mar 22, 2026 18:23DmtryDmtryRUSTrust-1.94.0Success59,191
Mar 22, 2026 17:56DmtryDmtryRUSTrust-1.94.0Success276,533
Mar 22, 2026 13:17Dominique GarmierDominique GarmierCPPclang++18.1.3Success16,462
Mar 22, 2026 10:36Dominique GarmierDominique GarmierZIG0.13.0Success262,953
Mar 22, 2026 10:01Dominique GarmierDominique GarmierZIG0.13.0Success468,509
Mar 22, 2026 09:13Dominique GarmierDominique GarmierZIG0.13.0Success544,364
Mar 22, 2026 08:57Dominique GarmierDominique GarmierCSHARP9.0.14Success150,010
Mar 22, 2026 08:54Dominique GarmierDominique GarmierCSHARP9.0.14Success148,124
Mar 22, 2026 03:52DmtryDmtryRUSTrust-1.94.0Success50,745
Mar 22, 2026 03:23DmtryDmtryRUSTrust-1.94.0Success44,678
Mar 22, 2026 02:40DmtryDmtryRUSTrust-1.94.0Success44,119+0.52 RP
Mar 21, 2026 23:41DmtryDmtryRUSTrust-1.94.0Success55,893
Mar 21, 2026 23:36DmtryDmtryRUSTrust-1.94.0Success54,716
Mar 21, 2026 23:10DmtryDmtryRUSTrust-1.94.0Success72,348
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