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 listDec 27, 2024 03:02Joad NacerJoad NacerError
Source Code

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

Challenge History

No challenges yet.

Run Statistics
#DateScoreWall TimeCPU UserCPU SystemMemoryError
1Dec 27, 2024 03:0200000Error: expected "3575944 ", got "3555123 "stderr
2Dec 27, 2024 03:0300000Error: expected "1044259 ", got "967962 "stderr
3Dec 27, 2024 03:0300000Error: expected "915831 ", got "891319 "stderr
4Dec 27, 2024 03:0300000Error: expected "1031705 ", got "1027030 "stderr
5Dec 27, 2024 03:0300000Error: expected "1242218 ", got "1236761 "stderr
6Dec 27, 2024 03:0300000Error: expected "1411136 ", got "1395015 "stderr
7Dec 27, 2024 03:0300000Error: expected "2442322 ", got "2433625 "stderr
8Dec 27, 2024 03:0300000Error: expected "834801 ", got "823680 "stderr
9Dec 27, 2024 03:0300000Error: expected "719049 ", got "717926 "stderr
10Dec 27, 2024 03:0400000Error: expected "844700 ", got "666000 "stderr
11Dec 27, 2024 03:0500000Error: expected "1596574 ", got "1549059 "stderr
12Dec 27, 2024 03:0500000Error: expected "1357278 ", got "1343202 "stderr
13Dec 27, 2024 03:0500000Error: expected "774329 ", got "742000 "stderr
14Dec 27, 2024 03:0500000Error: expected "1092844 ", got "1086919 "stderr
15Dec 27, 2024 03:0500000Error: expected "2941718 ", got "2912192 "stderr
16Dec 27, 2024 03:0500000Error: expected "737375 ", got "693635 "stderr
17Dec 27, 2024 03:0500000Error: expected "1796393 ", got "1770422 "stderr
18Dec 27, 2024 03:0500000Error: expected "1684825 ", got "1664737 "stderr
19Dec 27, 2024 03:0500000Error: expected "2716666 ", got "2633861 "stderr
20Dec 27, 2024 03:0500000Error: expected "4382887 ", got "4261000 "stderr
21Dec 27, 2024 03:0500000Error: expected "2168820 ", got "2166185 "stderr
22Dec 27, 2024 03:0500000Error: expected "1180004 ", got "1126716 "stderr
23Dec 27, 2024 03:0500000Error: expected "1948124 ", got "1875835 "stderr
24Dec 27, 2024 03:0500000Error: expected "916085 ", got "776000 "stderr
25Dec 27, 2024 03:0500000Error: expected "1703773 ", got "1671160 "stderr
26Dec 27, 2024 03:0700000Error: expected "666566 ", got "643438 "stderr
27Dec 27, 2024 03:0700000Error: expected "1044866 ", got "1015863 "stderr
28Dec 27, 2024 03:0700000Error: expected "1202552 ", got "1103446 "stderr
29Dec 27, 2024 03:0700000Error: expected "3377660 ", got "3356912 "stderr
30Dec 27, 2024 03:0700000Error: expected "957148 ", got "956620 "stderr
31Dec 27, 2024 03:0700000Error: expected "1213780 ", got "1197112 "stderr
32Dec 27, 2024 03:0700000Error: expected "619472 ", got "609111 "stderr
33Dec 27, 2024 03:0700000Error: expected "830398 ", got "821159 "stderr
34Dec 27, 2024 03:0700000Error: expected "1369612 ", got "1291000 "stderr
35Dec 27, 2024 03:0700000Error: expected "2653031 ", got "2555816 "stderr
36Dec 27, 2024 03:0700000Error: expected "1712659 ", got "1665998 "stderr
37Dec 27, 2024 03:0700000Error: expected "2128582 ", got "2126602 "stderr
38Dec 27, 2024 03:0700000Error: expected "1779483 ", got "1568000 "stderr
39Dec 27, 2024 03:0700000Error: expected "1590181 ", got "1502000 "stderr
40Dec 27, 2024 03:0700000Error: expected "681219 ", got "612526 "stderr
41Dec 27, 2024 03:0900000Error: expected "763784 ", got "756629 "stderr
42Dec 27, 2024 03:0900000Error: expected "1816190 ", got "1786214 "stderr
43Dec 27, 2024 03:0900000Error: expected "1917273 ", got "1778120 "stderr
44Dec 27, 2024 03:0900000Error: expected "1337989 ", got "1241565 "stderr
45Dec 27, 2024 03:0900000Error: expected "1418392 ", got "1218627 "stderr
46Dec 27, 2024 03:0900000Error: expected "1367727 ", got "1280764 "stderr
47Dec 27, 2024 03:0900000Error: expected "1401583 ", got "1401578 "stderr
48Dec 27, 2024 03:0900000Error: expected "2260628 ", got "2260034 "stderr
49Dec 27, 2024 03:0900000Error: expected "1148605 ", got "1052328 "stderr
50Dec 27, 2024 03:0900000Error: expected "2735067 ", got "2638738 "stderr
51Dec 27, 2024 03:0900000Error: expected "2982214 ", got "2777000 "stderr
52Dec 27, 2024 03:0900000Error: expected "864435 ", got "773779 "stderr
53Dec 27, 2024 03:0900000Error: expected "1075473 ", got "1074368 "stderr
54Dec 27, 2024 03:0900000Error: expected "814816 ", got "679000 "stderr
55Dec 27, 2024 03:1100000Error: expected "729846 ", got "706340 "stderr
56Dec 27, 2024 03:1100000Error: expected "3456413 ", got "3413000 "stderr
57Dec 27, 2024 03:1100000Error: expected "1757351 ", got "1523000 "stderr
58Dec 27, 2024 03:1100000Error: expected "685259 ", got "630105 "stderr
59Dec 27, 2024 03:1100000Error: expected "1972432 ", got "1920354 "stderr
60Dec 27, 2024 03:1100000Error: expected "814015 ", got "751253 "stderr
61Dec 27, 2024 03:1100000Error: expected "1125614 ", got "1063221 "stderr
62Dec 27, 2024 03:1200000Error: expected "1822837 ", got "1695000 "stderr
63Dec 27, 2024 03:1200000Error: expected "646093 ", got "643987 "stderr
64Dec 27, 2024 03:1200000Error: expected "1167141 ", got "1135388 "stderr
65Dec 27, 2024 03:1200000Error: expected "1039701 ", got "1038016 "stderr
66Dec 27, 2024 03:1200000Error: expected "3277139 ", got "3274581 "stderr
67Dec 27, 2024 03:1200000Error: expected "2444445 ", got "2409820 "stderr
68Dec 27, 2024 03:1200000Error: expected "803041 ", got "782748 "stderr
69Dec 27, 2024 03:1200000Error: expected "1525444 ", got "1506938 "stderr
70Dec 27, 2024 03:1200000Error: expected "2572763 ", got "2458000 "stderr
71Dec 27, 2024 03:1200000Error: expected "1235903 ", got "1192747 "stderr
72Dec 27, 2024 03:1200000Error: expected "2856403 ", got "2669403 "stderr
73Dec 27, 2024 03:1200000Error: expected "2034795 ", got "1939002 "stderr
74Dec 27, 2024 03:1200000Error: expected "2229035 ", got "2219791 "stderr
75Dec 27, 2024 03:1200000Error: expected "1388516 ", got "1343271 "stderr
76Dec 27, 2024 03:1200000Error: expected "1230330 ", got "1142251 "stderr
77Dec 27, 2024 03:2500000Error: expected "1681904 ", got "1623965 "stderr
78Dec 27, 2024 03:2600000Error: expected "658148 ", got "656528 "stderr
79Dec 27, 2024 03:2600000Error: expected "1078601 ", got "1065597 "stderr
80Dec 27, 2024 03:2600000Error: expected "2315111 ", got "2067000 "stderr
81Dec 27, 2024 03:2600000Error: expected "1274870 ", got "1261118 "stderr
82Dec 27, 2024 03:2600000Error: expected "1231809 ", got "1219100 "stderr
83Dec 27, 2024 03:2600000Error: expected "1803706 ", got "1793042 "stderr
84Dec 27, 2024 03:2600000Error: expected "1227131 ", got "1212850 "stderr
85Dec 27, 2024 03:2600000Error: expected "1741920 ", got "1710516 "stderr
86Dec 27, 2024 03:2600000Error: expected "1339597 ", got "1228834 "stderr
87Dec 27, 2024 03:2600000Error: expected "1079752 ", got "1073738 "stderr
88Dec 27, 2024 03:2700000Error: expected "1165349 ", got "1155914 "stderr
89Dec 27, 2024 03:2700000Error: expected "960727 ", got "762000 "stderr
90Dec 27, 2024 03:2700000Error: expected "1425372 ", got "1319192 "stderr
91Dec 27, 2024 03:2700000Error: expected "2776946 ", got "2765224 "stderr
92Dec 27, 2024 03:2700000Error: expected "926721 ", got "925825 "stderr
93Dec 27, 2024 03:2700000Error: expected "1613100 ", got "1566000 "stderr
94Dec 27, 2024 03:2700000Error: expected "2041283 ", got "1963000 "stderr
95Dec 27, 2024 03:2700000Error: expected "2700769 ", got "2448000 "stderr
96Dec 27, 2024 03:1119,81628,254,26910,449,0001,044,0002,322,432
97Dec 27, 2024 03:0322,22630,916,67510,908,0001,983,0002,412,544
98Dec 27, 2024 03:0523,01042,239,81412,320,0001,026,0002,404,352
99Dec 27, 2024 03:2723,52930,538,37113,647,00002,519,040
100Dec 27, 2024 03:0324,38341,440,66512,122,0002,020,0002,285,568
101Dec 27, 2024 03:2724,83431,034,82113,376,0001,028,0002,322,432
102Dec 27, 2024 03:2726,06635,336,37813,103,0002,015,0002,392,064
103Dec 27, 2024 03:1226,21945,530,36914,194,0001,013,0002,408,448
104Dec 27, 2024 03:0527,50930,411,06213,961,0001,994,0002,392,064
105Dec 27, 2024 03:2729,32636,248,51816,009,0001,000,0002,367,488
106Dec 27, 2024 03:0729,40334,044,46916,051,0001,003,0002,404,352
107Dec 27, 2024 03:0929,76737,562,20915,234,0002,031,0002,400,256
108Dec 27, 2024 03:0730,87246,977,96415,917,0001,989,0002,371,584
109Dec 27, 2024 03:0531,59041,312,77518,322,00002,461,696
110Dec 27, 2024 03:2731,64741,512,92118,355,00002,338,816
111Dec 27, 2024 03:0931,69042,385,91818,380,00002,428,928
112Dec 27, 2024 03:1132,66449,655,62916,951,0001,994,0002,453,504
113Dec 27, 2024 03:0933,34042,039,64417,302,0002,035,0002,371,584
114Dec 27, 2024 03:1233,64337,634,36818,486,0001,027,0002,355,200
115Dec 27, 2024 03:0533,83850,227,04019,626,00002,469,888
116Dec 27, 2024 03:2734,33850,619,14919,916,00002,383,872
117Dec 27, 2024 03:0734,94547,111,37717,228,0003,040,0002,490,368
118Dec 27, 2024 03:0935,33851,050,59018,447,0002,049,0002,412,544
119Dec 27, 2024 03:0936,05051,340,96018,918,0001,991,0002,506,752
120Dec 27, 2024 03:1236,54743,065,66720,188,0001,009,0002,510,848
121Dec 27, 2024 03:0536,71444,496,39620,280,0001,014,0002,457,600
122Dec 27, 2024 03:0937,24349,035,40421,601,00002,461,696
123Dec 27, 2024 03:0337,75354,905,27019,907,0001,990,0002,428,928
124Dec 27, 2024 03:0537,77445,276,60920,914,000995,0002,441,216
125Dec 27, 2024 03:1138,16645,078,05521,130,0001,006,0002,445,312