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
May 8, 2026 03:27Josu San MartinJosu San MartinCPPg++13.3.0Error
May 8, 2026 03:22Josu San MartinJosu San MartinCPPg++13.3.0Error
May 8, 2026 03:21Josu San MartinJosu San MartinCPPg++13.3.0Success3,486+21.24 RP
May 8, 2026 03:19Josu San MartinJosu San MartinCPPg++14.2.0Error
May 8, 2026 03:18Josu San MartinJosu San MartinCPPg++13.3.0Error
May 8, 2026 03:16Josu San MartinJosu San MartinCPPg++14.2.0Error
May 8, 2026 03:12Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 03:05Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 03:03Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 03:02Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 03:01Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:55Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:54Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:52Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:50Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:49Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:45Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:43Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:42Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:39Josu San MartinJosu San MartinCPPclang++18.1.3Success3,512+45.48 RP
May 8, 2026 02:35Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 02:33Josu San MartinJosu San MartinCPPclang++18.1.3Error
May 8, 2026 00:36Josu San MartinJosu San MartinCPPg++10.5.0Error
May 7, 2026 06:38Victor MerckléVictor MerckléCPPg++14.2.0Error
May 6, 2026 16:18Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 16:13Dominique GarmierDominique GarmierCPPclang++18.1.3Error
May 6, 2026 16:13Dominique GarmierDominique GarmierCPPclang++18.1.3Error
May 6, 2026 16:12Dominique GarmierDominique GarmierCPPclang++18.1.3Error
May 6, 2026 16:12Dominique GarmierDominique GarmierCPPclang++18.1.3Error
May 6, 2026 16:11Dominique GarmierDominique GarmierCSHARP9.0.15Error
May 6, 2026 16:10Dominique GarmierDominique GarmierCSHARP9.0.15Error
May 6, 2026 16:09Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 16:09Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 16:09Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 16:07Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 16:07Dominique GarmierDominique GarmierRUSTrust-1.94.1Error
May 6, 2026 16:06Dominique GarmierDominique GarmierRUSTrust-1.94.1Error
May 6, 2026 15:59Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 15:58Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 15:58Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 15:58Dominique GarmierDominique GarmierCPPg++13.3.0Error
May 6, 2026 15:50Dominique GarmierDominique GarmierCSHARP9.0.15Error
May 5, 2026 20:28olliecrowolliecrowCSHARP9.0.15Success125,755
May 5, 2026 20:12olliecrowolliecrowCSHARP9.0.15Success115,456
May 5, 2026 16:37olliecrowolliecrowCSHARP9.0.15Success77,939
May 5, 2026 16:16olliecrowolliecrowCSHARP9.0.14Success92,241
May 5, 2026 15:55Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 15:52Victor MerckléVictor MerckléCPPg++14.2.0Success36,794
May 5, 2026 15:36olliecrowolliecrowCSHARP9.0.14Success101,203
May 5, 2026 14:58Victor MerckléVictor MerckléGOgo1.26.2Success8,463
May 5, 2026 14:49Victor MerckléVictor MerckléGOgo1.26.2Error
May 5, 2026 14:38Victor MerckléVictor MerckléCSHARP10.0.7Success7,336+160.21 RP
May 5, 2026 14:34Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 14:30Victor MerckléVictor MerckléGOgo1.26.2Success40,681
May 5, 2026 14:05Victor MerckléVictor MerckléZIG0.16.0Success5,087+988.85 RP
May 5, 2026 13:59olliecrowolliecrowZIG0.15.1Success103,112
May 5, 2026 13:58Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 13:54olliecrowolliecrowZIG0.15.1Success55,574
May 5, 2026 13:53Victor MerckléVictor MerckléCPPg++14.2.0Success406,465
May 5, 2026 13:51Victor MerckléVictor MerckléCPPg++14.2.0Success407,000
May 5, 2026 13:49Victor MerckléVictor MerckléCPPg++14.2.0Success366,696
May 5, 2026 13:47Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 13:37Victor MerckléVictor MerckléCPPg++14.2.0Success366,593
May 5, 2026 13:35Victor MerckléVictor MerckléCPPg++14.2.0Success366,506
May 5, 2026 13:33Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 13:24Victor MerckléVictor MerckléCPPg++14.2.0Success366,662
May 5, 2026 13:18Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 13:16Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 13:14Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 12:57Victor MerckléVictor MerckléCPPg++14.2.0Success5,381
May 5, 2026 12:37Victor MerckléVictor MerckléCPPg++14.2.0Success39,894
May 5, 2026 12:32Victor MerckléVictor MerckléCPPg++14.2.0Success39,184
May 5, 2026 12:11Victor MerckléVictor MerckléCPPg++14.2.0Success366,977
May 5, 2026 12:01Victor MerckléVictor MerckléCPPg++14.2.0Success5,362
May 5, 2026 11:59Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 11:57Victor MerckléVictor MerckléCPPg++14.2.0Success4,950
May 5, 2026 11:55Victor MerckléVictor MerckléCPPg++14.2.0Success4,910+67.77 RP
May 5, 2026 11:53Victor MerckléVictor MerckléCPPg++14.2.0Success5,200
May 5, 2026 11:49Victor MerckléVictor MerckléCPPg++14.2.0Success5,737
May 5, 2026 11:41Victor MerckléVictor MerckléCPPg++14.2.0Success403,074
May 5, 2026 11:32Victor MerckléVictor MerckléCPPg++14.2.0Success5,082
May 5, 2026 11:30Victor MerckléVictor MerckléCPPg++14.2.0Success10,918
May 5, 2026 11:28Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 11:26Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 11:20Victor MerckléVictor MerckléCPPg++14.2.0Success5,079+317.64 RP
May 5, 2026 11:17Victor MerckléVictor MerckléCSHARP10.0.7Success8,313+1'013.49 RP
May 5, 2026 11:15Victor MerckléVictor MerckléCPPg++14.2.0Success9,693
May 5, 2026 10:49Victor MerckléVictor MerckléCSHARP10.0.7Error
May 5, 2026 10:41Victor MerckléVictor MerckléCPPg++14.2.0Error
May 5, 2026 10:37Victor MerckléVictor MerckléCPPg++14.2.0Success6,056+1'349.19 RP
May 5, 2026 10:31Victor MerckléVictor MerckléCPPg++14.2.0Success670,527
May 5, 2026 01:55olliecrowolliecrowCSHARP9.0.14Success110,841
May 5, 2026 00:57olliecrowolliecrowCSHARP9.0.14Success108,667
May 5, 2026 00:04olliecrowolliecrowCSHARP9.0.14Success112,674
May 4, 2026 22:35olliecrowolliecrowCPPclang++18.1.3Success92,210
May 4, 2026 22:23olliecrowolliecrowCSHARP9.0.15Success111,286
May 4, 2026 22:05olliecrowolliecrowCPPclang++18.1.3Success92,434
May 4, 2026 10:59Victor MerckléVictor MerckléCPPg++14.2.0Success361,610
May 4, 2026 10:21Victor MerckléVictor MerckléCPPg++14.2.0Success350,913
May 4, 2026 09:57Victor MerckléVictor MerckléCPPg++14.2.0Success331,848