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
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
Mar 27, 2024 19:59E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 19:53E SequeiraE SequeiraCPPclang++10.0.0Success82,255
Mar 27, 2024 19:51E SequeiraE SequeiraCPPclang++10.0.0Success81,266
Mar 27, 2024 19:51E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 19:50E SequeiraE SequeiraCPPclang++10.0.0Success81,210
Mar 27, 2024 19:48E SequeiraE SequeiraCPPclang++10.0.0Success81,264
Mar 27, 2024 19:48E SequeiraE SequeiraCPPclang++10.0.0Success96,343
Mar 27, 2024 19:47E SequeiraE SequeiraCPPclang++10.0.0Success96,916
Mar 27, 2024 19:45E SequeiraE SequeiraCPPclang++10.0.0Success81,222
Mar 27, 2024 16:12E SequeiraE SequeiraCPPclang++10.0.0Success93,167
Mar 27, 2024 16:03E SequeiraE SequeiraCPPclang++10.0.0Success92,259
Mar 27, 2024 16:01E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 16:00E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:55E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:53E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:53E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:52E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:50E SequeiraE SequeiraCPPclang++10.0.0Success94,282
Mar 27, 2024 15:50E SequeiraE SequeiraCPPclang++10.0.0Success93,286
Mar 27, 2024 15:49E SequeiraE SequeiraCPPclang++10.0.0Success94,247
Mar 27, 2024 15:48E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:43E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 15:28E SequeiraE SequeiraCPPclang++10.0.0Success534,624
Mar 27, 2024 15:25E SequeiraE SequeiraCPPclang++10.0.0Success77,069
Mar 27, 2024 15:14E SequeiraE SequeiraCPPclang++10.0.0Success77,433
Mar 27, 2024 15:09E SequeiraE SequeiraCPPclang++10.0.0Success77,403
Mar 27, 2024 13:50E SequeiraE SequeiraCPPclang++10.0.0Success76,443
Mar 27, 2024 13:46E SequeiraE SequeiraCPPclang++10.0.0Success76,398+0.34 RP
Mar 27, 2024 13:44E SequeiraE SequeiraCPPclang++10.0.0Success76,778
Mar 27, 2024 13:42E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 13:41E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 13:34E SequeiraE SequeiraCPPclang++10.0.0Success143,368
Mar 27, 2024 13:32E SequeiraE SequeiraCPPclang++10.0.0Success234,974
Mar 27, 2024 13:30E SequeiraE SequeiraCPPclang++10.0.0Success295,370
Mar 27, 2024 13:28E SequeiraE SequeiraCPPclang++10.0.0Success235,611
Mar 27, 2024 13:27E SequeiraE SequeiraCPPclang++10.0.0Success235,389
Mar 27, 2024 13:25E SequeiraE SequeiraCPPclang++10.0.0Success4,862,031
Mar 27, 2024 13:22E SequeiraE SequeiraCPPclang++10.0.0Success141,178
Mar 27, 2024 13:21E SequeiraE SequeiraCPPclang++10.0.0Success142,045
Mar 27, 2024 13:17E SequeiraE SequeiraCPPclang++10.0.0Success141,883
Mar 27, 2024 13:15E SequeiraE SequeiraCPPclang++10.0.0Success141,087
Mar 27, 2024 13:15E SequeiraE SequeiraCPPclang++10.0.0Success140,961
Mar 27, 2024 13:09E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 13:09E SequeiraE SequeiraCPPclang++10.0.0Success76,598+0.10 RP
Mar 27, 2024 13:08E SequeiraE SequeiraCPPclang++10.0.0Success76,655+0.11 RP
Mar 27, 2024 13:08E SequeiraE SequeiraCPPclang++10.0.0Success148,566
Mar 27, 2024 13:07E SequeiraE SequeiraCPPclang++10.0.0Success150,276
Mar 27, 2024 13:06E SequeiraE SequeiraCPPclang++10.0.0Success76,719+0.06 RP
Mar 27, 2024 13:04E SequeiraE SequeiraCPPclang++10.0.0Success76,757+1.67 RP
Mar 27, 2024 13:03E SequeiraE SequeiraCPPclang++10.0.0Success78,079
Mar 27, 2024 13:02E SequeiraE SequeiraCPPclang++10.0.0Success77,755+0.26 RP