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 listMar 19, 2026 04:30Dominique GarmierDominique GarmierError
Source Code

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

Challenge History
DateChallengerCostTypeStatus
Jul 5, 2026 20:09Victor Mercklé10.00CustomSolution Broken
Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Jul 5, 2026 20:09014,930,2075,570,000020,480No answer to stdout. Died or killed?
2Mar 19, 2026 04:0211,43121,858,0625,525,0001,105,0002,277,376
3Mar 19, 2026 04:0211,45721,612,3335,538,0001,107,0002,445,312
4Mar 19, 2026 05:4711,46726,618,3015,543,0001,108,0002,273,280
5Mar 19, 2026 05:5411,48822,699,3175,553,0001,110,0002,281,472
6Mar 19, 2026 04:3511,52824,942,2555,572,0001,114,0002,269,184
7Mar 19, 2026 04:4311,54523,093,2805,580,0001,116,0002,437,120
8Mar 19, 2026 04:2211,54723,501,9105,581,0001,116,0002,527,232
9Mar 19, 2026 05:4011,55924,566,0685,587,0001,117,0002,445,312
10Mar 19, 2026 05:0411,57225,752,0015,594,0001,118,0002,269,184
11Mar 19, 2026 04:0211,58328,356,4374,799,0001,919,0002,527,232
12Mar 19, 2026 03:5411,58623,094,3306,720,00002,441,216
13Mar 19, 2026 03:3411,59025,040,0855,602,0001,120,0002,449,408
14Mar 19, 2026 04:1311,59124,036,8606,723,00002,277,376
15Mar 19, 2026 03:4311,59324,234,2225,604,0001,120,0002,428,928
16Mar 19, 2026 05:1511,59327,735,4425,604,0001,120,0002,433,024
17Mar 19, 2026 04:2611,60020,509,3405,607,0001,121,0002,273,280
18Mar 19, 2026 03:5111,60227,090,1255,608,0001,121,0002,269,184
19Mar 19, 2026 04:3011,62430,320,9695,619,0001,123,0002,428,928
20Mar 19, 2026 03:4311,63423,871,5125,624,0001,124,0002,269,184
21Mar 19, 2026 05:1111,67928,512,4775,645,0001,129,0002,277,376
22Mar 19, 2026 03:3711,69327,398,1925,652,0001,130,0002,445,312
23Mar 19, 2026 04:5011,69722,133,2045,654,0001,130,0002,293,760
24Mar 19, 2026 04:1911,69827,104,3386,785,00002,445,312
25Mar 19, 2026 05:1311,70224,681,3955,656,0001,131,0002,437,120
26Mar 19, 2026 04:3211,70526,497,5415,658,0001,131,0002,441,216
27Mar 19, 2026 05:2011,72622,391,8125,668,0001,133,0002,453,504
28Mar 19, 2026 03:5411,73821,416,5585,674,0001,134,0002,273,280
29Mar 19, 2026 05:1311,75921,493,0395,684,0001,136,0002,273,280
30Mar 19, 2026 04:1711,84825,662,6874,909,0001,963,0002,527,232
31Mar 19, 2026 04:4611,85221,675,2405,892,000982,0002,289,664
32Mar 19, 2026 04:3311,87624,115,2015,904,000984,0002,433,024
33Mar 19, 2026 04:0711,89126,105,3346,897,00002,510,848
34Mar 19, 2026 05:3111,90023,998,6645,916,000986,0002,285,568
35Mar 19, 2026 05:1011,90924,327,9535,921,000986,0002,433,024
36Mar 19, 2026 05:1011,91926,837,2384,938,0001,975,0002,269,184
37Mar 19, 2026 05:2511,92123,163,5984,939,0001,975,0002,265,088
38Mar 19, 2026 05:3211,92121,843,0104,939,0001,975,0002,424,832
39Mar 19, 2026 05:2811,92423,634,2944,940,0001,976,0002,441,216
40Mar 19, 2026 03:4911,92622,540,2035,929,000988,0002,433,024
41Mar 19, 2026 04:0211,92922,837,2565,931,000988,0002,273,280
42Mar 19, 2026 03:3411,93324,689,5194,944,0001,977,0002,441,216
43Mar 19, 2026 05:2611,93623,894,7614,945,0001,978,0002,441,216
44Mar 19, 2026 03:4511,93823,246,6674,946,0001,978,0002,281,472
45Mar 19, 2026 03:5811,93821,316,6474,946,0001,978,0002,433,024
46Mar 19, 2026 04:1611,94022,724,2144,947,0001,978,0002,527,232
47Mar 19, 2026 04:3311,95225,743,8474,952,0001,980,0002,441,216
48Mar 19, 2026 04:4311,95524,499,5504,953,0001,981,0002,289,664
49Mar 19, 2026 04:1511,96023,129,3324,955,0001,982,0002,428,928
50Mar 19, 2026 04:5211,96222,540,2134,956,0001,982,0002,273,280
51Mar 19, 2026 04:0211,97222,512,3344,960,0001,984,0002,420,736
52Mar 19, 2026 04:1511,98822,132,6374,967,0001,986,0002,289,664
53Mar 19, 2026 04:3911,99124,011,8384,968,0001,987,0002,441,216
54Mar 19, 2026 04:0112,00921,838,5154,975,0001,990,0002,428,928
55Mar 19, 2026 05:4912,03326,537,6954,985,0001,994,0002,265,088
56Mar 19, 2026 03:5212,05323,564,7775,993,000998,0002,433,024
57Mar 19, 2026 04:2312,06624,026,2924,999,0001,999,0002,433,024
58Mar 19, 2026 04:2412,07427,584,1305,002,0002,001,0002,527,232
59Mar 19, 2026 04:0212,08123,644,1895,005,0002,002,0002,437,120
60Mar 19, 2026 03:4512,08326,856,3555,006,0002,002,0002,420,736
61Mar 19, 2026 05:5612,10921,157,0585,017,0002,006,0002,510,848
62Mar 19, 2026 05:2012,11222,081,7315,018,0002,007,0002,523,136
63Mar 19, 2026 03:3412,12124,191,5896,026,0001,004,0002,269,184
64Mar 19, 2026 04:1912,12922,425,8165,025,0002,010,0002,433,024
65Mar 19, 2026 04:3712,14125,287,9166,036,0001,006,0002,424,832
66Mar 19, 2026 03:5112,19726,530,6655,053,0002,021,0002,424,832
67Mar 19, 2026 05:1112,21722,514,6886,074,0001,012,0002,269,184
68Mar 19, 2026 03:4812,24324,109,1195,072,0002,029,0002,269,184
69Mar 19, 2026 04:2212,25224,513,8745,076,0002,030,0002,420,736
70Mar 19, 2026 05:2812,25928,177,6045,079,0002,031,0002,449,408
71Mar 19, 2026 05:2812,28124,942,5875,088,0002,035,0002,424,832
72Mar 19, 2026 03:4712,29523,695,6895,094,0002,037,0002,506,752
73Mar 19, 2026 03:4812,30020,491,4685,096,0002,038,0002,428,928
74Mar 19, 2026 04:0712,30527,157,5275,098,0002,039,0002,273,280
75Mar 19, 2026 04:1312,32627,279,3815,107,0002,042,0002,424,832
76Mar 19, 2026 04:5212,34727,790,6405,115,0002,046,0002,428,928
77Mar 19, 2026 04:0212,36228,615,6116,146,0001,024,0002,273,280
78Mar 19, 2026 05:3212,36425,158,6575,122,0002,049,0002,527,232
79Mar 19, 2026 03:5212,37626,481,4026,153,0001,025,0002,437,120
80Mar 19, 2026 04:2312,37925,459,1685,129,0002,051,0002,519,040
81Mar 19, 2026 04:1012,38325,405,3615,130,0002,052,0002,441,216
82Mar 19, 2026 04:0212,38429,943,3265,131,0002,052,0002,281,472
83Mar 19, 2026 03:5812,39723,031,4435,136,0002,054,0002,277,376
84Mar 19, 2026 04:1012,39727,015,0696,163,0001,027,0002,273,280
85Mar 19, 2026 03:3712,40221,789,4615,138,0002,055,0002,273,280
86Mar 19, 2026 03:4712,40323,956,2445,139,0002,055,0002,269,184
87Mar 19, 2026 04:1112,40723,238,0585,140,0002,056,0002,289,664
88Mar 19, 2026 04:3712,40723,203,8945,140,0002,056,0002,281,472
89Mar 19, 2026 03:4212,42823,091,2326,179,0001,029,0002,269,184
90Mar 19, 2026 03:4212,43124,560,1505,150,0002,060,0002,424,832
91Mar 19, 2026 03:4812,43425,607,8885,152,0002,060,0002,273,280
92Mar 19, 2026 03:3412,44023,701,2766,185,0001,030,0002,277,376
93Mar 19, 2026 03:5512,44023,789,4166,185,0001,030,0002,437,120
94Mar 19, 2026 04:3912,45022,542,1445,158,0002,063,0002,420,736
95Mar 19, 2026 05:3212,45022,981,4155,158,0002,063,0002,277,376
96Mar 19, 2026 04:3512,45222,459,8275,159,0002,063,0002,441,216
97Mar 19, 2026 04:0212,45725,769,9765,161,0002,064,0002,269,184
98Mar 19, 2026 03:4712,46022,455,7375,162,0002,065,0002,424,832
99Mar 19, 2026 04:0112,46030,111,1055,162,0002,065,0002,433,024
100Mar 19, 2026 05:3112,47226,096,7576,201,0001,033,0002,437,120
101Mar 19, 2026 04:2312,47626,493,9935,169,0002,067,0002,428,928
102Mar 19, 2026 04:3212,47624,964,5976,203,0001,033,0002,424,832
103Mar 19, 2026 05:2512,48123,734,6316,205,0001,034,0002,506,752
104Mar 19, 2026 04:5012,48424,406,1145,172,0002,069,0002,433,024
105Mar 19, 2026 04:2612,49522,777,1225,177,0002,070,0002,273,280
106Mar 19, 2026 04:1612,49726,134,6145,177,0002,071,0002,265,088
107Mar 19, 2026 04:5012,49822,957,0855,178,0002,071,0002,273,280
108Mar 19, 2026 05:0712,49827,930,8925,178,0002,071,0002,277,376
109Mar 19, 2026 05:1512,50924,988,7725,182,0002,073,0002,289,664
110Mar 19, 2026 05:0712,51722,907,4256,223,0001,037,0002,428,928
111Mar 19, 2026 04:0712,51931,986,0855,187,0002,074,0002,273,280
112Mar 19, 2026 04:4612,52226,314,5015,188,0002,075,0002,281,472
113Mar 19, 2026 05:4012,52225,108,6135,188,0002,075,0002,277,376
114Mar 19, 2026 04:3312,53129,958,1545,192,0002,076,0002,433,024
115Mar 19, 2026 03:4912,54127,372,8305,196,0002,078,0002,273,280
116Mar 19, 2026 05:5612,54824,276,4835,199,0002,079,0002,269,184
117Mar 19, 2026 05:0012,55227,524,9545,200,0002,080,0002,437,120
118Mar 19, 2026 04:3212,56025,608,7045,204,0002,081,0002,510,848
119Mar 19, 2026 04:1912,56424,278,2955,205,0002,082,0002,277,376
120Mar 19, 2026 04:1712,56923,966,3466,249,0001,041,0002,424,832
121Mar 19, 2026 05:4012,57928,331,4945,212,0002,084,0002,277,376
122Mar 19, 2026 03:5812,58827,363,3295,215,0002,086,0002,269,184
123Mar 19, 2026 05:0012,59120,575,8305,217,0002,086,0002,437,120
124Mar 19, 2026 05:0012,60522,098,3586,267,0001,044,0002,514,944
125Mar 19, 2026 05:3612,60523,192,5156,267,0001,044,0002,281,472
126Mar 19, 2026 05:3612,60925,681,3785,224,0002,089,0002,420,736
127Mar 19, 2026 05:1112,61228,325,0376,270,0001,045,0002,420,736
128Mar 19, 2026 04:0112,61430,111,9165,226,0002,090,0002,269,184
129Mar 19, 2026 03:4012,61622,648,9826,272,0001,045,0002,285,568
130Mar 19, 2026 04:2412,61928,619,5045,228,0002,091,0002,273,280
131Mar 19, 2026 03:5312,62626,824,7265,231,0002,092,0002,437,120
132Mar 19, 2026 04:0312,62627,272,0176,277,0001,046,0002,523,136
133Mar 19, 2026 03:4212,63128,484,3466,280,0001,046,0002,510,848
134Mar 19, 2026 05:1512,63124,060,0205,233,0002,093,0002,330,624
135Mar 19, 2026 04:2412,63821,581,1406,283,0001,047,0002,420,736
136Mar 19, 2026 03:5112,64029,541,1666,284,0001,047,0002,437,120
137Mar 19, 2026 03:3412,65226,397,2387,338,00002,514,944
138Mar 19, 2026 05:3112,65222,847,2366,290,0001,048,0002,281,472
139Mar 19, 2026 05:0712,65725,134,1705,244,0002,097,0002,437,120
140Mar 19, 2026 03:3712,67624,747,3286,302,0001,050,0002,408,448
141Mar 19, 2026 04:3712,68122,687,9516,305,0001,050,0002,277,376
142Mar 19, 2026 04:3512,68422,273,7736,306,0001,051,0002,289,664
143Mar 19, 2026 05:2512,68622,178,2896,307,0001,051,0002,289,664
144Mar 19, 2026 05:2012,69027,188,0585,257,0002,103,0002,281,472
145Mar 19, 2026 04:5512,70027,633,0056,314,0001,052,0002,277,376
146Mar 19, 2026 05:2612,70225,416,3026,315,0001,052,0002,523,136
147Mar 19, 2026 05:4912,70322,117,4735,263,0002,105,0002,416,640
148Mar 19, 2026 03:5212,70530,405,4486,317,0001,052,0002,510,848
149Mar 19, 2026 05:5612,70524,647,6236,317,0001,052,0002,265,088
150Mar 19, 2026 04:2712,70924,185,5165,265,0002,106,0002,433,024
151Mar 19, 2026 05:1312,72126,917,6015,270,0002,108,0002,428,928
152Mar 19, 2026 04:2712,72823,260,9227,382,00002,420,736
153Mar 19, 2026 05:3612,72925,053,3347,383,00002,527,232
154Mar 19, 2026 04:5212,73622,599,7686,332,0001,055,0002,265,088
155Mar 19, 2026 04:1612,74026,769,1816,334,0001,055,0002,277,376
156Mar 19, 2026 05:4912,74724,432,0696,337,0001,056,0002,441,216
157Mar 19, 2026 04:1112,75226,915,0255,283,0002,113,0002,277,376
158Mar 19, 2026 05:4712,75223,023,0625,283,0002,113,0002,527,232
159Mar 19, 2026 03:5312,75323,523,7996,341,0001,056,0002,514,944
160Mar 19, 2026 03:4012,76227,627,0286,345,0001,057,0002,428,928
161Mar 19, 2026 03:4012,76922,155,5486,348,0001,058,0002,273,280
162Mar 19, 2026 04:1012,77421,960,1857,409,00002,408,448
163Mar 19, 2026 04:3912,78324,272,7276,355,0001,059,0002,277,376
164Mar 19, 2026 03:5512,78426,913,0496,356,0001,059,0002,277,376
165Mar 19, 2026 05:0412,78828,639,5107,417,00002,412,544
166Mar 19, 2026 04:5512,79823,623,2526,363,0001,060,0002,420,736
167Mar 19, 2026 04:1712,80924,024,5526,368,0001,061,0002,265,088
168Mar 19, 2026 03:5412,81026,808,4316,369,0001,061,0002,441,216
169Mar 19, 2026 04:0312,81225,213,0786,370,0001,061,0002,424,832
170Mar 19, 2026 05:4712,81726,694,1346,372,0001,062,0002,514,944
171Mar 19, 2026 03:4312,82424,368,1826,376,0001,062,0002,416,640
172Mar 19, 2026 05:2612,83124,759,5536,379,0001,063,0002,519,040
173Mar 19, 2026 04:1512,84326,942,6546,385,0001,064,0002,269,184
174Mar 19, 2026 04:2612,84522,702,5996,386,0001,064,0002,273,280
175Mar 19, 2026 05:5412,85523,721,2396,391,0001,065,0002,428,928
176Mar 19, 2026 04:2512,85927,853,4496,393,0001,065,0002,527,232
177Mar 19, 2026 04:5512,85924,728,6586,393,0001,065,0002,420,736
178Mar 19, 2026 03:4512,87227,164,9076,400,0001,066,0002,269,184
179Mar 19, 2026 05:1012,87224,598,3786,400,0001,066,0002,285,568
180Mar 19, 2026 04:1112,87624,106,4867,468,00002,277,376
181Mar 19, 2026 04:2512,88328,572,3157,472,00002,277,376
182Mar 19, 2026 03:4912,88424,021,2906,406,0001,067,0002,277,376
183Mar 19, 2026 04:2212,88423,393,3166,406,0001,067,0002,408,448
184Mar 19, 2026 04:2712,89028,400,9776,408,0001,068,0002,281,472
185Mar 19, 2026 03:5312,89724,144,4576,412,0001,068,0002,437,120
186Mar 19, 2026 04:3012,91427,788,4056,420,0001,070,0002,437,120
187Mar 19, 2026 05:0412,92923,975,3946,428,0001,071,0002,527,232
188Mar 19, 2026 04:0312,93824,601,9336,432,0001,072,0002,514,944
189Mar 19, 2026 03:3412,95224,759,9546,439,0001,073,0002,424,832
190Mar 19, 2026 05:5412,95726,934,1346,442,0001,073,0002,277,376
191Mar 19, 2026 04:4612,97123,450,3927,523,00002,404,352
192Mar 19, 2026 04:4313,01725,176,5166,472,0001,078,0002,269,184
193Mar 19, 2026 04:2513,02826,316,6786,477,0001,079,0002,498,560
194Mar 19, 2026 04:1313,05226,019,9626,489,0001,081,0002,277,376
195Mar 19, 2026 03:5513,05923,798,6157,574,00002,400,256
196Mar 19, 2026 04:3013,09529,893,6286,510,0001,085,0002,265,088