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
Apr 13, 2024 13:14E SequeiraE SequeiraCPPg++9.4.0Error
Apr 13, 2024 13:12E SequeiraE SequeiraCPPg++9.4.0Success468,571
Apr 13, 2024 05:16Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Error
Apr 13, 2024 05:15Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Error
Apr 13, 2024 05:14Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Error
Apr 13, 2024 03:28Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Success35,369+17.41 RP
Apr 13, 2024 03:27Yuriy LyfenkoYuriy LyfenkoCPPg++9.4.0Error
Apr 13, 2024 00:41EdgarEdgarRUSTrust-1.77.2Error
Apr 12, 2024 23:46korey-skorey-sRUSTrust-1.77.2Success140,586+12.22 RP
Apr 12, 2024 23:32korey-skorey-sRUSTrust-1.77.2Success2,701,797
Apr 12, 2024 22:37korey-skorey-sRUSTrust-1.77.2Error
Apr 12, 2024 22:08korey-skorey-sRUSTrust-1.77.2Success169,747+1.49 RP
Apr 12, 2024 22:07korey-skorey-sRUSTrust-1.77.2Success177,817
Apr 12, 2024 21:54korey-skorey-sRUSTrust-1.77.2Success174,162+20.23 RP
Apr 10, 2024 01:32stdspstdspRUSTrust-1.77.1Success112,704
Apr 9, 2024 13:11Steve BronderSteve BronderCPPg++9.4.0Success2,397,856+4.17 RP
Apr 9, 2024 08:37stdspstdspRUSTrust-1.77.1Success111,241
Apr 9, 2024 08:03stdspstdspRUSTrust-1.77.1Success112,385
Apr 9, 2024 07:59stdspstdspRUSTrust-1.77.1Success112,112
Apr 9, 2024 06:03stdspstdspRUSTrust-1.77.1Success128,676
Apr 9, 2024 05:26stdspstdspRUSTrust-1.77.1Success112,846
Apr 9, 2024 05:17stdspstdspRUSTrust-1.77.1Error
Apr 9, 2024 05:16stdspstdspRUSTrust-1.77.1Success107,936
Apr 7, 2024 11:07E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 7, 2024 08:59E SequeiraE SequeiraCPPclang++10.0.0Success91,623
Apr 7, 2024 08:55E SequeiraE SequeiraRUSTrust-1.77.1Error
Apr 6, 2024 14:34E SequeiraE SequeiraCPPg++9.4.0Success102,916
Apr 6, 2024 14:16E SequeiraE SequeiraCPPg++9.4.0Success102,409
Apr 6, 2024 08:04E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:44E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:43E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:42E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:41E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:38E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:36E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:35E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:33E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:28E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:25E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:25E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:23E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:20E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:18E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:17E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:16E SequeiraE SequeiraCPPg++9.4.0Error
Apr 6, 2024 07:14E SequeiraE SequeiraCPPg++9.4.0Error
Mar 31, 2024 14:09E SequeiraE SequeiraCPPclang++10.0.0Success77,395
Mar 31, 2024 14:07E SequeiraE SequeiraCPPclang++10.0.0Success77,498
Mar 31, 2024 14:06E SequeiraE SequeiraCPPclang++10.0.0Success77,153
Mar 31, 2024 14:05E SequeiraE SequeiraCPPclang++10.0.0Success76,940
Mar 31, 2024 14:00E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 31, 2024 13:58E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 31, 2024 13:56E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 31, 2024 13:54E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 31, 2024 13:52E SequeiraE SequeiraCPPclang++10.0.0Success76,997
Mar 31, 2024 13:51E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 31, 2024 13:51E SequeiraE SequeiraCPPclang++10.0.0Success585,166
Mar 28, 2024 10:38E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 28, 2024 10:38E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 28, 2024 10:37E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 28, 2024 10:35E SequeiraE SequeiraCPPclang++10.0.0Success79,308
Mar 28, 2024 10:34E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 28, 2024 10:33E SequeiraE SequeiraCPPclang++10.0.0Success77,128
Mar 28, 2024 10:32E SequeiraE SequeiraCPPclang++10.0.0Success81,269
Mar 28, 2024 10:31E SequeiraE SequeiraCPPclang++10.0.0Success80,564
Mar 28, 2024 10:31E SequeiraE SequeiraCPPclang++10.0.0Success98,119
Mar 28, 2024 10:29E SequeiraE SequeiraCPPclang++10.0.0Success1,103,656
Mar 28, 2024 10:22E SequeiraE SequeiraCPPclang++10.0.0Success977,683
Mar 28, 2024 10:15E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 28, 2024 10:13E SequeiraE SequeiraCPPclang++10.0.0Success93,304
Mar 27, 2024 22:01E SequeiraE SequeiraCPPclang++10.0.0Success602,139
Mar 27, 2024 22:01E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 22:00E SequeiraE SequeiraCPPclang++10.0.0Success707,111
Mar 27, 2024 21:58E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 21:57E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 21:55E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 21:53E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 21:48E SequeiraE SequeiraCPPclang++10.0.0Success103,252
Mar 27, 2024 21:48E SequeiraE SequeiraCPPclang++10.0.0Success101,686
Mar 27, 2024 21:48E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 21:26E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 21:03E SequeiraE SequeiraCPPclang++10.0.0Success80,834
Mar 27, 2024 21:03E SequeiraE SequeiraCPPclang++10.0.0Success80,547
Mar 27, 2024 21:00E SequeiraE SequeiraCPPclang++10.0.0Success80,210
Mar 27, 2024 21:00E SequeiraE SequeiraCPPclang++10.0.0Success80,838
Mar 27, 2024 20:54E SequeiraE SequeiraCPPclang++10.0.0Success80,224
Mar 27, 2024 20:54E SequeiraE SequeiraCPPclang++10.0.0Success172,503
Mar 27, 2024 20:53E SequeiraE SequeiraCPPclang++10.0.0Success80,605
Mar 27, 2024 20:52E SequeiraE SequeiraCPPclang++10.0.0Success80,288
Mar 27, 2024 20:51E SequeiraE SequeiraCPPclang++10.0.0Success79,660
Mar 27, 2024 20:50E SequeiraE SequeiraCPPclang++10.0.0Success80,203
Mar 27, 2024 20:48E SequeiraE SequeiraCPPclang++10.0.0Success82,393
Mar 27, 2024 20:42E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 20:41E SequeiraE SequeiraCPPclang++10.0.0Success81,274
Mar 27, 2024 20:41E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 20:36E SequeiraE SequeiraCPPclang++10.0.0Success80,807
Mar 27, 2024 20:35E SequeiraE SequeiraCPPclang++10.0.0Success81,190
Mar 27, 2024 20:32E SequeiraE SequeiraCPPclang++10.0.0Success82,552
Mar 27, 2024 20:19E SequeiraE SequeiraCPPclang++10.0.0Success86,264
Mar 27, 2024 20:12E SequeiraE SequeiraCPPclang++10.0.0Error