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 25, 2026 06:00Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 25, 2026 05:59Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 16:25Dominique GarmierDominique GarmierRUSTrust-1.94.0Error
Mar 24, 2026 16:24Dominique GarmierDominique GarmierRUSTrust-1.94.0Error
Mar 24, 2026 16:24Dominique GarmierDominique GarmierRUSTrust-1.94.0Success9,276
Mar 24, 2026 14:37DmtryDmtryRUSTrust-1.94.0Error
Mar 24, 2026 14:37DmtryDmtryRUSTrust-1.94.0Error
Mar 24, 2026 14:37DmtryDmtryRUSTrust-1.94.0Error
Mar 24, 2026 14:36DmtryDmtryRUSTrust-1.94.0Error
Mar 24, 2026 14:36DmtryDmtryRUSTrust-1.94.0Success4,481
Mar 24, 2026 14:35DmtryDmtryRUSTrust-1.94.0Success4,324
Mar 24, 2026 14:20DmtryDmtryRUSTrust-1.94.0Success4,288
Mar 24, 2026 14:09DmtryDmtryRUSTrust-1.94.0Error
Mar 24, 2026 12:26Dominique GarmierDominique GarmierRUSTrust-1.94.0Success16,188
Mar 24, 2026 12:26Dominique GarmierDominique GarmierRUSTrust-1.94.0Error
Mar 24, 2026 12:24Dominique GarmierDominique GarmierRUSTrust-1.94.0Error
Mar 24, 2026 08:20Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 08:20Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 08:20Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 08:19Dominique GarmierDominique GarmierCPPclang++18.1.3Success8,479+30.88 RP
Mar 24, 2026 08:19Dominique GarmierDominique GarmierCPPclang++18.1.3Success9,155
Mar 24, 2026 08:18Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 08:18Dominique GarmierDominique GarmierCPPclang++18.1.3Success8,707+200.81 RP
Mar 24, 2026 08:16Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 08:16Dominique GarmierDominique GarmierCPPclang++18.1.3Success10,552+75.39 RP
Mar 24, 2026 08:15Dominique GarmierDominique GarmierCPPclang++18.1.3Error
Mar 24, 2026 05:04Dominique GarmierDominique GarmierRUSTrust-1.94.0Success16,117
Mar 24, 2026 02:45olliecrowolliecrowRUSTrust-1.94.0Error
Mar 23, 2026 23:33Dominique GarmierDominique GarmierCPPg++13.3.0Success12,817
Mar 23, 2026 22:47DmtryDmtryRUSTrust-1.94.0Success4,497
Mar 23, 2026 22:36DmtryDmtryRUSTrust-1.94.0Success5,174
Mar 23, 2026 22:18DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 22:09DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 21:55DmtryDmtryRUSTrust-1.94.0Success4,652
Mar 23, 2026 21:35DmtryDmtryRUSTrust-1.94.0Success4,374
Mar 23, 2026 21:09DmtryDmtryRUSTrust-1.94.0Success4,710
Mar 23, 2026 17:04DmtryDmtryRUSTrust-1.94.0Success4,424
Mar 23, 2026 16:25DmtryDmtryRUSTrust-1.94.0Success4,407
Mar 23, 2026 16:14Dominique GarmierDominique GarmierCPPg++13.3.0Success16,762
Mar 23, 2026 16:13Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 23, 2026 16:10Dominique GarmierDominique GarmierCPPg++13.3.0Success86,126
Mar 23, 2026 16:09Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 23, 2026 16:09Dominique GarmierDominique GarmierCPPg++13.3.0Error
Mar 23, 2026 16:04DmtryDmtryRUSTrust-1.94.0Success70,778
Mar 23, 2026 16:00DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 14:30DmtryDmtryRUSTrust-1.94.0Success4,372
Mar 23, 2026 14:14DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 13:59DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 13:58DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 13:53DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 13:34DmtryDmtryRUSTrust-1.94.0Success4,314
Mar 23, 2026 13:11DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 12:53DmtryDmtryRUSTrust-1.94.0Success4,517
Mar 23, 2026 12:44DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 12:35DmtryDmtryRUSTrust-1.94.0Success4,259+25.09 RP
Mar 23, 2026 12:23DmtryDmtryRUSTrust-1.94.0Success4,305+2.16 RP
Mar 23, 2026 12:11DmtryDmtryRUSTrust-1.94.0Success4,379
Mar 23, 2026 12:09DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 12:03DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 05:29olliecrowolliecrowCPPg++13.3.0Success5,897
Mar 23, 2026 02:12DmtryDmtryRUSTrust-1.94.0Success4,309+37.10 RP
Mar 23, 2026 02:05DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 01:49DmtryDmtryRUSTrust-1.94.0Success4,466
Mar 23, 2026 01:23DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 01:10DmtryDmtryRUSTrust-1.94.0Success4,379+296.74 RP
Mar 23, 2026 01:07DmtryDmtryRUSTrust-1.94.0Error
Mar 23, 2026 00:20DmtryDmtryRUSTrust-1.94.0Success5,033+4.73 RP
Mar 23, 2026 00:06DmtryDmtryRUSTrust-1.94.0Success5,045+29.80 RP
Mar 22, 2026 23:45DmtryDmtryRUSTrust-1.94.0Success5,426
Mar 22, 2026 23:30DmtryDmtryRUSTrust-1.94.0Success5,224
Mar 22, 2026 23:13DmtryDmtryRUSTrust-1.94.0Success5,122+48.33 RP
Mar 22, 2026 23:11DmtryDmtryRUSTrust-1.94.0Error
Mar 22, 2026 23:05DmtryDmtryRUSTrust-1.94.0Success5,252+14.75 RP
Mar 22, 2026 23:04DmtryDmtryRUSTrust-1.94.0Error
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