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 GarmierScore: 12,407Success
Source Code

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

Challenge History

No challenges yet.

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