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:15Joad 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:1500000Error: expected "1239195 ", got "1186399 "stderr
2Dec 27, 2024 03:1500000Error: expected "966273 ", got "917272 "stderr
3Dec 27, 2024 03:1500000Error: expected "2365312 ", got "2237563 "stderr
4Dec 27, 2024 03:1500000Error: expected "941455 ", got "835778 "stderr
5Dec 27, 2024 03:1500000Error: expected "773373 ", got "768833 "stderr
6Dec 27, 2024 03:1500000Error: expected "807320 ", got "804868 "stderr
7Dec 27, 2024 03:1500000Error: expected "1452227 ", got "1276000 "stderr
8Dec 27, 2024 03:1500000Error: expected "1796312 ", got "1500000 "stderr
9Dec 27, 2024 03:1500000Error: expected "940193 ", got "797941 "stderr
10Dec 27, 2024 03:1500000Error: expected "1111678 ", got "1092945 "stderr
11Dec 27, 2024 03:1500000Error: expected "1604509 ", got "1545937 "stderr
12Dec 27, 2024 03:1500000Error: expected "812014 ", got "808527 "stderr
13Dec 27, 2024 03:1500000Error: expected "873156 ", got "858344 "stderr
14Dec 27, 2024 03:1500000Error: expected "943407 ", got "887831 "stderr
15Dec 27, 2024 03:1700000Error: expected "813993 ", got "795277 "stderr
16Dec 27, 2024 03:1700000Error: expected "678935 ", got "646543 "stderr
17Dec 27, 2024 03:1700000Error: expected "1094398 ", got "1077023 "stderr
18Dec 27, 2024 03:1700000Error: expected "1671847 ", got "1588695 "stderr
19Dec 27, 2024 03:1700000Error: expected "1779311 ", got "1582000 "stderr
20Dec 27, 2024 03:1700000Error: expected "2168111 ", got "2068000 "stderr
21Dec 27, 2024 03:1700000Error: expected "2378163 ", got "2094000 "stderr
22Dec 27, 2024 03:1700000Error: expected "943728 ", got "828000 "stderr
23Dec 27, 2024 03:1700000Error: expected "2335358 ", got "2312777 "stderr
24Dec 27, 2024 03:1700000Error: expected "2336429 ", got "1888000 "stderr
25Dec 27, 2024 03:1700000Error: expected "1302736 ", got "1218603 "stderr
26Dec 27, 2024 03:1700000Error: expected "1904262 ", got "1848000 "stderr
27Dec 27, 2024 03:1700000Error: expected "1210802 ", got "1178545 "stderr
28Dec 27, 2024 03:1700000Error: expected "1450848 ", got "1419000 "stderr
29Dec 27, 2024 03:1800000Error: expected "666224 ", got "639428 "stderr
30Dec 27, 2024 03:1800000Error: expected "1127895 ", got "1034187 "stderr
31Dec 27, 2024 03:1800000Error: expected "904370 ", got "822480 "stderr
32Dec 27, 2024 03:1800000Error: expected "648173 ", got "648035 "stderr
33Dec 27, 2024 03:1800000Error: expected "2013321 ", got "2013315 "stderr
34Dec 27, 2024 03:1800000Error: expected "2146610 ", got "2106543 "stderr
35Dec 27, 2024 03:1800000Error: expected "622984 ", got "614669 "stderr
36Dec 27, 2024 03:1800000Error: expected "1214202 ", got "1176390 "stderr
37Dec 27, 2024 03:2000000Error: expected "1376094 ", got "1321727 "stderr
38Dec 27, 2024 03:2000000Error: expected "1215058 ", got "1213750 "stderr
39Dec 27, 2024 03:2000000Error: expected "1601746 ", got "1600501 "stderr
40Dec 27, 2024 03:2000000Error: expected "1923222 ", got "1815747 "stderr
41Dec 27, 2024 03:2000000Error: expected "1413574 ", got "1295000 "stderr
42Dec 27, 2024 03:2000000Error: expected "825699 ", got "695132 "stderr
43Dec 27, 2024 03:2000000Error: expected "1074496 ", got "1072437 "stderr
44Dec 27, 2024 03:2000000Error: expected "1117196 ", got "1030211 "stderr
45Dec 27, 2024 03:2000000Error: expected "2265114 ", got "2257058 "stderr
46Dec 27, 2024 03:2000000Error: expected "1745407 ", got "1726260 "stderr
47Dec 27, 2024 03:2000000Error: expected "1694880 ", got "1686510 "stderr
48Dec 27, 2024 03:2000000Error: expected "1587312 ", got "1568272 "stderr
49Dec 27, 2024 03:2000000Error: expected "1141338 ", got "995000 "stderr
50Dec 27, 2024 03:2200000Error: expected "760928 ", got "678454 "stderr
51Dec 27, 2024 03:2200000Error: expected "2136081 ", got "2098886 "stderr
52Dec 27, 2024 03:2200000Error: expected "1767989 ", got "1626000 "stderr
53Dec 27, 2024 03:2200000Error: expected "1387156 ", got "1384184 "stderr
54Dec 27, 2024 03:2200000Error: expected "1650971 ", got "1508846 "stderr
55Dec 27, 2024 03:2200000Error: expected "1314666 ", got "1205000 "stderr
56Dec 27, 2024 03:2200000Error: expected "876516 ", got "864444 "stderr
57Dec 27, 2024 03:2200000Error: expected "1940051 ", got "1938306 "stderr
58Dec 27, 2024 03:2200000Error: expected "2087499 ", got "1887204 "stderr
59Dec 27, 2024 03:2200000Error: expected "3307773 ", got "3233000 "stderr
60Dec 27, 2024 03:2200000Error: expected "1599941 ", got "1539870 "stderr
61Dec 27, 2024 03:2200000Error: expected "1663733 ", got "1652025 "stderr
62Dec 27, 2024 03:2200000Error: expected "1598059 ", got "1480602 "stderr
63Dec 27, 2024 03:2200000Error: expected "1482232 ", got "1409869 "stderr
64Dec 27, 2024 03:2200000Error: expected "1782153 ", got "1750546 "stderr
65Dec 27, 2024 03:2200000Error: expected "2035604 ", got "1923000 "stderr
66Dec 27, 2024 03:2200000Error: expected "1782578 ", got "1738750 "stderr
67Dec 27, 2024 03:2200000Error: expected "1048782 ", got "1015000 "stderr
68Dec 27, 2024 03:2200000Error: expected "1628418 ", got "1481348 "stderr
69Dec 27, 2024 03:2200000Error: expected "2785524 ", got "2673000 "stderr
70Dec 27, 2024 03:2021,77428,687,64412,629,00002,285,568
71Dec 27, 2024 03:1522,28442,854,08612,925,00002,379,776
72Dec 27, 2024 03:2223,06928,989,73013,380,00002,457,600
73Dec 27, 2024 03:2223,19828,316,44512,420,0001,035,0002,441,216
74Dec 27, 2024 03:1523,21227,532,43413,463,00002,306,048
75Dec 27, 2024 03:2226,04034,264,86515,103,00002,367,488
76Dec 27, 2024 03:1727,62137,956,13515,019,0001,001,0002,318,336
77Dec 27, 2024 03:1527,72939,968,80015,078,0001,005,0002,400,256
78Dec 27, 2024 03:2027,84539,412,45214,132,0002,018,0002,285,568
79Dec 27, 2024 03:2227,94536,982,79015,195,0001,013,0002,383,872
80Dec 27, 2024 03:1728,06432,537,49115,260,0001,017,0002,379,776
81Dec 27, 2024 03:2028,28135,801,94716,403,00002,408,448
82Dec 27, 2024 03:2228,79735,923,74814,615,0002,087,0002,371,584
83Dec 27, 2024 03:1529,22238,668,60516,949,00002,351,104
84Dec 27, 2024 03:2229,42440,836,63616,063,0001,003,0002,412,544
85Dec 27, 2024 03:2229,68441,778,72016,205,0001,012,0002,486,272
86Dec 27, 2024 03:1732,15346,275,96417,613,0001,036,0002,293,760
87Dec 27, 2024 03:2232,59848,086,98217,912,000995,0002,416,640
88Dec 27, 2024 03:2032,95944,588,96317,104,0002,012,0002,367,488
89Dec 27, 2024 03:2034,49743,669,61918,008,0002,000,0002,457,600
90Dec 27, 2024 03:2034,56046,438,92419,043,0001,002,0002,498,560
91Dec 27, 2024 03:2034,63849,499,55719,086,0001,004,0002,461,696
92Dec 27, 2024 03:2234,95346,725,83518,246,0002,027,0002,461,696
93Dec 27, 2024 03:1735,81248,458,66820,771,00002,351,104
94Dec 27, 2024 03:2236,04049,164,26818,913,0001,990,0002,420,736
95Dec 27, 2024 03:2236,06247,188,73120,916,00002,424,832
96Dec 27, 2024 03:2036,23645,133,63419,016,0002,001,0002,506,752
97Dec 27, 2024 03:1736,52947,226,54619,170,0002,017,0002,404,352
98Dec 27, 2024 03:2036,58846,756,20120,211,0001,010,0002,433,024
99Dec 27, 2024 03:1536,68446,399,49819,251,0002,026,0002,510,848
100Dec 27, 2024 03:2236,77846,055,25920,316,0001,015,0002,506,752
101Dec 27, 2024 03:1737,17839,304,39220,537,0001,026,0002,338,816
102Dec 27, 2024 03:1537,76650,685,24921,904,00002,523,136