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.

Date AuthorLanguageStatus Score
Jan 15, 2025 08:40NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 15, 2025 08:30NoSIMD_C#NoSIMD_C#CSHARP9.0.1Success3,035,724
Jan 15, 2025 08:18NoSIMD_C#NoSIMD_C#CSHARP9.0.1Success4,190,731
Jan 15, 2025 06:44NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 15, 2025 01:34korey-skorey-sRUSTrust-1.84.0Success82,547+0.20 RP
Jan 15, 2025 01:33korey-skorey-sRUSTrust-1.84.0Success82,945
Jan 15, 2025 01:32korey-skorey-sRUSTrust-1.84.0Error
Jan 15, 2025 01:32korey-skorey-sRUSTrust-1.84.0Success83,097
Jan 15, 2025 01:27korey-skorey-sRUSTrust-1.84.0Success82,681+4.69 RP
Jan 14, 2025 23:42korey-skorey-sRUSTrust-1.84.0Success86,417
Jan 14, 2025 23:27korey-skorey-sRUSTrust-1.84.0Success86,678
Jan 14, 2025 23:13korey-skorey-sRUSTrust-1.84.0Success86,016+4.58 RP
Jan 14, 2025 22:56korey-skorey-sRUSTrust-1.84.0Error
Jan 14, 2025 22:54korey-skorey-sRUSTrust-1.84.0Error
Jan 14, 2025 22:37korey-skorey-sRUSTrust-1.84.0Success89,543+10.90 RP
Jan 12, 2025 14:32parastromparastromRUSTrust-1.84.0Error
Jan 12, 2025 14:30parastromparastromRUSTrust-1.84.0Error
Jan 12, 2025 14:29parastromparastromRUSTrust-1.84.0Error
Dec 31, 2024 20:22Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 20:20Louis PonetLouis PonetRUSTrust-1.83.0Success99,384+0.47 RP
Dec 31, 2024 20:10Louis PonetLouis PonetRUSTrust-1.83.0Success102,381
Dec 31, 2024 19:57Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:33Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:33Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:31Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:25Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:16Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:06Louis PonetLouis PonetRUSTrust-1.83.0Success99,850+5.34 RP
Dec 31, 2024 19:03Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 19:03Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 18:18Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 18:17Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 16:56Louis PonetLouis PonetRUSTrust-1.83.0Success106,209
Dec 31, 2024 16:56Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 16:55Louis PonetLouis PonetRUSTrust-1.83.0Success105,476+1.62 RP
Dec 31, 2024 16:28Louis PonetLouis PonetRUSTrust-1.83.0Success118,448
Dec 31, 2024 15:00Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 14:59Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 11:13Louis PonetLouis PonetRUSTrust-1.83.0Success108,998
Dec 31, 2024 11:13Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 11:13Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 11:12Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:51Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:44Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:41Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:40Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:39Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:36Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 10:33Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:57Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:56Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:55Louis PonetLouis PonetRUSTrust-1.83.0Success114,922
Dec 31, 2024 09:54Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:50Louis PonetLouis PonetRUSTrust-1.83.0Success107,998
Dec 31, 2024 09:50Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:49Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:47Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:47Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:46Louis PonetLouis PonetRUSTrust-1.83.0Success107,314+4.17 RP
Dec 31, 2024 09:44Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:43Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 31, 2024 09:42Louis PonetLouis PonetRUSTrust-1.83.0Success114,805
Dec 31, 2024 02:53korey-skorey-sRUSTrust-1.83.0Success99,228+24.87 RP
Dec 30, 2024 21:26Louis PonetLouis PonetRUSTrust-1.83.0Success249,617
Dec 30, 2024 21:15Louis PonetLouis PonetRUSTrust-1.83.0Success112,340+1.89 RP
Dec 30, 2024 21:14Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 21:11Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 21:11Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 20:55Louis PonetLouis PonetRUSTrust-1.83.0Success114,781+1.75 RP
Dec 30, 2024 20:54Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 20:53Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 20:46Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 20:41Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 20:15Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 19:54Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 19:44Louis PonetLouis PonetRUSTrust-1.83.0Success120,853
Dec 30, 2024 19:29Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 19:28Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 19:27Louis PonetLouis PonetRUSTrust-1.83.0Success117,397
Dec 30, 2024 19:27Louis PonetLouis PonetRUSTrust-1.83.0Success117,895
Dec 30, 2024 19:26Louis PonetLouis PonetRUSTrust-1.83.0Success117,140+0.64 RP
Dec 30, 2024 19:26Louis PonetLouis PonetRUSTrust-1.83.0Success118,019+2.43 RP
Dec 30, 2024 19:25Louis PonetLouis PonetRUSTrust-1.83.0Success123,871
Dec 30, 2024 19:25Louis PonetLouis PonetRUSTrust-1.83.0Success122,829
Dec 30, 2024 19:24Louis PonetLouis PonetRUSTrust-1.83.0Success122,729
Dec 30, 2024 19:24Louis PonetLouis PonetRUSTrust-1.83.0Success123,153
Dec 30, 2024 19:24Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 19:23Louis PonetLouis PonetRUSTrust-1.83.0Success122,378
Dec 30, 2024 19:19Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 18:47Louis PonetLouis PonetRUSTrust-1.83.0Success122,886
Dec 30, 2024 18:46Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 18:44Louis PonetLouis PonetRUSTrust-1.83.0Success137,095
Dec 30, 2024 18:44Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 18:43Louis PonetLouis PonetRUSTrust-1.83.0Success137,671
Dec 30, 2024 18:43Louis PonetLouis PonetRUSTrust-1.83.0Success140,003
Dec 30, 2024 18:42Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 30, 2024 17:46Louis PonetLouis PonetRUSTrust-1.83.0Success139,664
Dec 30, 2024 17:44Louis PonetLouis PonetRUSTrust-1.83.0Success139,388
Dec 30, 2024 17:43Louis PonetLouis PonetRUSTrust-1.83.0Success121,505+0.70 RP
Dec 30, 2024 17:37Louis PonetLouis PonetRUSTrust-1.83.0Error