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.

Back to listFeb 10, 2026 14:15Code HintsCode HintsScore: 79,976Success
Source Code

Source code access is restricted. Log in to request access.

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Feb 10, 2026 16:3278,74172,785,86744,656,0001,014,0002,473,984
2Feb 10, 2026 13:0778,82179,132,67945,716,00002,355,200
3Feb 10, 2026 16:2779,11672,477,65444,890,000997,0002,330,624
4Feb 10, 2026 13:0779,12973,540,42543,900,0001,995,0002,465,792
5Feb 10, 2026 14:5479,13469,763,34843,903,0001,995,0002,351,104
6Feb 10, 2026 16:5779,13473,971,72444,901,000997,0002,469,888
7Feb 10, 2026 14:4879,14075,141,77744,904,000997,0002,469,888
8Feb 10, 2026 14:5079,17170,924,98243,923,0001,996,0002,465,792
9Feb 10, 2026 14:5479,18872,997,56843,933,0001,996,0002,478,080
10Feb 10, 2026 16:0079,22274,909,55243,952,0001,997,0002,322,432
11Feb 10, 2026 14:5279,28171,886,50143,984,0001,999,0002,510,848
12Feb 10, 2026 16:3279,31768,104,05945,004,0001,000,0002,494,464
13Feb 10, 2026 14:5479,33470,127,41944,014,0002,000,0002,375,680
14Feb 10, 2026 14:5279,34569,609,80344,020,0002,000,0002,465,792
15Feb 10, 2026 14:4879,34867,921,53445,022,0001,000,0002,342,912
16Feb 10, 2026 16:0079,34869,658,04045,022,0001,000,0002,367,488
17Feb 10, 2026 14:5479,38171,720,03944,040,0002,001,0002,334,720
18Feb 10, 2026 14:5479,39774,054,40344,048,0002,002,0002,355,200
19Feb 10, 2026 17:0279,39871,807,97244,049,0002,002,0002,486,272
20Feb 10, 2026 13:0779,40268,740,21744,051,0002,002,0002,510,848
21Feb 10, 2026 13:0779,41771,214,86345,061,0001,001,0002,498,560
22Feb 10, 2026 14:5279,42470,854,17044,064,0002,002,0002,334,720
23Feb 10, 2026 14:5279,47172,449,40844,089,0002,004,0002,502,656
24Feb 10, 2026 16:3879,47266,224,27244,090,0002,004,0002,334,720
25Feb 10, 2026 14:5479,49071,058,18045,102,0001,002,0002,338,816
26Feb 10, 2026 14:5279,52168,692,25744,117,0002,005,0002,510,848
27Feb 10, 2026 16:3479,52175,132,51045,120,0001,002,0002,359,296
28Feb 10, 2026 14:5479,52868,753,44844,121,0002,005,0002,486,272
29Feb 10, 2026 16:2779,53370,451,20845,127,0001,002,0002,482,176
30Feb 10, 2026 14:5079,54869,275,33145,135,0001,003,0002,473,984
31Feb 10, 2026 14:5279,55772,352,76444,137,0002,006,0002,486,272
32Feb 10, 2026 14:5079,55967,950,94444,138,0002,006,0002,502,656
33Feb 10, 2026 14:5079,55967,582,32644,138,0002,006,0002,506,752
34Feb 10, 2026 14:5079,56268,004,90045,143,0001,003,0002,498,560
35Feb 10, 2026 16:2779,57173,504,70144,145,0002,006,0002,355,200
36Feb 10, 2026 14:5079,57869,985,91445,152,0001,003,0002,473,984
37Feb 10, 2026 14:5479,65071,602,18444,189,0002,008,0002,342,912
38Feb 10, 2026 14:5279,70967,224,54245,226,0001,005,0002,359,296
39Feb 10, 2026 14:5679,71268,285,32844,223,0002,010,0002,498,560
40Feb 10, 2026 13:0779,73667,273,08646,247,00002,334,720
41Feb 10, 2026 14:5479,74068,529,80145,244,0001,005,0002,355,200
42Feb 10, 2026 13:0779,74768,821,79346,253,00002,498,560
43Feb 10, 2026 14:5679,74873,704,45745,249,0001,005,0002,506,752
44Feb 10, 2026 16:3279,75976,815,78745,255,0001,005,0002,359,296
45Feb 10, 2026 16:2779,79368,593,58145,274,0001,006,0002,473,984
46Feb 10, 2026 14:4779,79874,198,44245,277,0001,006,0002,510,848
47Feb 10, 2026 14:5479,80771,417,44644,276,0002,012,0002,351,104
48Feb 10, 2026 16:3279,80768,913,18045,282,0001,006,0002,371,584
49Feb 10, 2026 14:5279,82676,169,57745,293,0001,006,0002,371,584
50Feb 10, 2026 14:5079,83867,326,89745,300,0001,006,0002,359,296
51Feb 10, 2026 14:5479,84168,610,21246,308,00002,367,488
52Feb 10, 2026 16:3479,84867,068,97945,306,0001,006,0002,498,560
53Feb 10, 2026 14:5479,85067,503,85346,313,00002,482,176
54Feb 10, 2026 14:5279,85577,067,42646,316,00002,359,296
55Feb 10, 2026 14:5479,88166,777,20246,331,00002,506,752
56Feb 10, 2026 16:5279,89367,032,31745,331,0001,007,0002,359,296
57Feb 10, 2026 14:5279,90069,646,92146,342,00002,371,584
58Feb 10, 2026 14:5279,92170,426,26845,347,0001,007,0002,482,176
59Feb 10, 2026 14:5279,92268,668,77946,355,00002,355,200
60Feb 10, 2026 16:5279,95967,729,20746,376,00002,478,080
61Feb 10, 2026 14:5079,96069,077,75945,369,0001,008,0002,502,656
62Feb 10, 2026 16:5779,97667,445,46945,378,0001,008,0002,490,368
63Feb 10, 2026 16:2779,99169,735,52845,387,0001,008,0002,469,888
64Feb 10, 2026 16:2780,00071,451,29245,392,0001,008,0002,494,464
65Feb 10, 2026 14:5280,00967,216,72345,397,0001,008,0002,486,272
66Feb 10, 2026 14:1580,01071,874,26745,398,0001,008,0002,506,752
67Feb 10, 2026 16:3280,01071,168,58945,398,0001,008,0002,478,080
68Feb 10, 2026 14:5480,03165,328,71845,409,0001,009,0002,473,984
69Feb 10, 2026 14:5680,03669,957,67546,421,00002,478,080
70Feb 10, 2026 14:4780,03875,416,41745,413,0001,009,0002,334,720
71Feb 10, 2026 14:5480,04066,301,03746,423,00002,473,984
72Feb 10, 2026 14:5080,04168,262,96646,424,00002,359,296
73Feb 10, 2026 16:3280,04772,230,19146,427,00002,478,080
74Feb 10, 2026 14:5280,06071,767,54745,426,0001,009,0002,375,680
75Feb 10, 2026 14:5080,06767,609,63546,439,00002,363,392
76Feb 10, 2026 16:3880,07477,920,91645,434,0001,009,0002,367,488
77Feb 10, 2026 14:5080,07666,254,39546,444,00002,347,008
78Feb 10, 2026 14:5280,09778,289,09745,447,0001,009,0002,355,200
79Feb 10, 2026 13:0780,10368,131,39245,450,0001,010,0002,490,368
80Feb 10, 2026 14:5080,11667,363,13945,457,0001,010,0002,486,272
81Feb 10, 2026 14:5080,12169,968,49245,460,0001,010,0002,342,912
82Feb 10, 2026 16:2780,12474,863,83646,472,00002,490,368
83Feb 10, 2026 14:5480,13468,500,90946,478,00002,355,200
84Feb 10, 2026 13:0780,14372,940,02646,483,00002,502,656
85Feb 10, 2026 14:4880,16274,301,74546,494,00002,486,272
86Feb 10, 2026 16:3480,17468,081,75945,491,0001,010,0002,342,912
87Feb 10, 2026 14:5080,18669,746,19045,497,0001,011,0002,506,752
88Feb 10, 2026 16:5680,19568,800,86845,502,0001,011,0002,367,488
89Feb 10, 2026 16:5280,20267,105,31445,506,0001,011,0002,367,488
90Feb 10, 2026 17:0280,20271,251,51845,506,0001,011,0002,510,848
91Feb 10, 2026 14:5080,20968,542,02544,542,0001,979,0002,498,560
92Feb 10, 2026 14:4880,21268,813,07645,512,0001,011,0002,363,392
93Feb 10, 2026 16:2780,23372,576,68246,535,00002,351,104
94Feb 10, 2026 16:2780,25967,645,35145,539,0001,011,0002,482,176
95Feb 10, 2026 14:5680,27175,236,18846,557,00002,502,656
96Feb 10, 2026 14:5280,31774,211,89245,572,0001,012,0002,355,200
97Feb 10, 2026 14:5280,33371,030,14945,581,0001,012,0002,506,752
98Feb 10, 2026 14:4880,34166,611,89245,585,0001,013,0002,355,200
99Feb 10, 2026 16:5680,35767,094,24944,581,0002,026,0002,490,368
100Feb 10, 2026 14:5680,38674,433,16645,611,0001,013,0002,498,560
101Feb 10, 2026 14:1580,38873,053,10246,625,00002,494,464
102Feb 10, 2026 14:5080,38872,719,02345,612,0001,013,0002,498,560
103Feb 10, 2026 14:5280,38878,206,61245,612,0001,013,0002,363,392
104Feb 10, 2026 14:5480,40075,035,67345,619,0001,013,0002,367,488
105Feb 10, 2026 14:5080,40976,745,11946,637,00002,461,696
106Feb 10, 2026 16:3880,41472,266,58146,640,00002,506,752
107Feb 10, 2026 14:4880,45975,551,15445,652,0001,014,0002,478,080
108Feb 10, 2026 14:1580,48371,605,37646,680,00002,510,848
109Feb 10, 2026 14:4880,48372,163,88245,666,0001,014,0002,359,296
110Feb 10, 2026 14:5680,50374,743,65046,692,00002,473,984
111Feb 10, 2026 16:5780,53873,756,50645,697,0001,015,0002,342,912
112Feb 10, 2026 14:5080,54178,700,58146,714,00002,371,584
113Feb 10, 2026 16:0080,75575,199,41545,842,000996,0002,498,560
114Feb 10, 2026 16:3280,83373,817,26245,886,000997,0002,494,464
115Feb 10, 2026 14:4880,83672,187,82645,888,000997,0002,510,848
116Feb 10, 2026 14:4880,84073,085,14744,892,0001,995,0002,486,272
117Feb 10, 2026 16:5680,84173,318,92144,893,0001,995,0002,486,272
118Feb 10, 2026 17:0280,84378,178,02044,894,0001,995,0002,473,984
119Feb 10, 2026 14:5480,85074,550,95944,898,0001,995,0002,494,464
120Feb 10, 2026 13:0780,88370,759,29645,914,000998,0002,478,080
121Feb 10, 2026 14:4780,95972,764,28845,957,000999,0002,363,392
122Feb 10, 2026 16:3281,00377,617,06744,983,0001,999,0002,355,200
123Feb 10, 2026 16:3281,04772,168,58645,007,0002,000,0002,363,392