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 27, 2024 12:59E SequeiraE SequeiraCPPclang++10.0.0Success78,369
Mar 27, 2024 12:58E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 12:57E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 12:54E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 12:52E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 12:47E SequeiraE SequeiraCPPclang++10.0.0Success78,572
Mar 27, 2024 12:47E SequeiraE SequeiraCPPclang++10.0.0Success77,914+0.24 RP
Mar 27, 2024 12:46E SequeiraE SequeiraCPPclang++10.0.0Success78,060+0.20 RP
Mar 27, 2024 12:44E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 12:43E SequeiraE SequeiraCPPclang++10.0.0Success78,300
Mar 27, 2024 09:27E SequeiraE SequeiraCPPclang++10.0.0Success79,281
Mar 27, 2024 09:26E SequeiraE SequeiraCPPclang++10.0.0Success79,810
Mar 27, 2024 09:26E SequeiraE SequeiraCPPclang++10.0.0Success79,410
Mar 27, 2024 09:25E SequeiraE SequeiraCPPclang++10.0.0Success79,438
Mar 27, 2024 09:25E SequeiraE SequeiraCPPclang++10.0.0Success79,097
Mar 27, 2024 09:25E SequeiraE SequeiraCPPclang++10.0.0Success79,162
Mar 27, 2024 09:24E SequeiraE SequeiraCPPclang++10.0.0Success80,121
Mar 27, 2024 09:23E SequeiraE SequeiraCPPclang++10.0.0Success80,741
Mar 27, 2024 09:22E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 09:14E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 09:13E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 09:12E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 08:48E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 27, 2024 08:48E SequeiraE SequeiraCPPclang++10.0.0Success81,786
Mar 26, 2024 23:41IhebIhebCPPg++9.4.0Success757,272+0.02 RP
Mar 26, 2024 23:30IhebIhebCPPg++9.4.0Success758,527+6.36 RP
Mar 26, 2024 23:13IhebIhebCPPg++9.4.0Success1,465,477+2.39 RP
Mar 26, 2024 23:03IhebIhebCPPg++9.4.0Error
Mar 26, 2024 23:03IhebIhebCPPg++9.4.0Error
Mar 26, 2024 23:02IhebIhebCPPg++9.4.0Error
Mar 26, 2024 23:02IhebIhebCPPg++9.4.0Error
Mar 26, 2024 23:01IhebIhebCPPg++9.4.0Error
Mar 26, 2024 22:58IhebIhebCPPg++9.4.0Error
Mar 26, 2024 22:50IhebIhebCPPg++9.4.0Error
Mar 26, 2024 22:19E SequeiraE SequeiraCPPclang++10.0.0Success151,130
Mar 26, 2024 22:10E SequeiraE SequeiraCPPclang++10.0.0Success81,224
Mar 26, 2024 22:10IhebIhebCPPg++9.4.0Success2,255,158+4.43 RP
Mar 26, 2024 22:08E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 22:08E SequeiraE SequeiraCPPclang++10.0.0Success87,566
Mar 26, 2024 22:07E SequeiraE SequeiraCPPclang++10.0.0Success87,955
Mar 26, 2024 22:06E SequeiraE SequeiraCPPclang++10.0.0Success87,872
Mar 26, 2024 22:04E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:51E SequeiraE SequeiraCPPclang++10.0.0Success83,241
Mar 26, 2024 21:45E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:37E SequeiraE SequeiraCPPclang++10.0.0Success79,324
Mar 26, 2024 21:36E SequeiraE SequeiraCPPclang++10.0.0Success79,047
Mar 26, 2024 21:36E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:35E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:35E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:35E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:31E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:29E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:26E SequeiraE SequeiraCPPclang++10.0.0Success80,859
Mar 26, 2024 21:25E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:24E SequeiraE SequeiraCPPclang++10.0.0Success80,607
Mar 26, 2024 21:23E SequeiraE SequeiraCPPclang++10.0.0Success79,347
Mar 26, 2024 21:23E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:15E SequeiraE SequeiraCPPclang++10.0.0Success79,228
Mar 26, 2024 21:14E SequeiraE SequeiraCPPclang++10.0.0Success79,145
Mar 26, 2024 21:14E SequeiraE SequeiraCPPclang++10.0.0Success79,534
Mar 26, 2024 21:12E SequeiraE SequeiraCPPclang++10.0.0Success80,255
Mar 26, 2024 21:11E SequeiraE SequeiraCPPclang++10.0.0Success79,740
Mar 26, 2024 21:11E SequeiraE SequeiraCPPclang++10.0.0Success80,447
Mar 26, 2024 21:11E SequeiraE SequeiraCPPclang++10.0.0Success80,214
Mar 26, 2024 21:10E SequeiraE SequeiraCPPclang++10.0.0Success80,060
Mar 26, 2024 21:06E SequeiraE SequeiraCPPclang++10.0.0Success80,509
Mar 26, 2024 21:06E SequeiraE SequeiraCPPclang++10.0.0Success79,916
Mar 26, 2024 21:05E SequeiraE SequeiraCPPclang++10.0.0Success80,345
Mar 26, 2024 21:04E SequeiraE SequeiraCPPclang++10.0.0Success80,219
Mar 26, 2024 21:04E SequeiraE SequeiraCPPclang++10.0.0Success80,493
Mar 26, 2024 21:03E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:02E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 21:02E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 20:58E SequeiraE SequeiraCPPclang++10.0.0Success78,181+3.43 RP
Mar 26, 2024 20:50E SequeiraE SequeiraCPPclang++10.0.0Success80,829
Mar 26, 2024 20:46E SequeiraE SequeiraCPPclang++10.0.0Success80,336+2.67 RP
Mar 26, 2024 20:44E SequeiraE SequeiraCPPclang++10.0.0Success82,268
Mar 26, 2024 20:43E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 20:41E SequeiraE SequeiraCPPclang++10.0.0Success93,606
Mar 26, 2024 20:39E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 20:39E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 20:35E SequeiraE SequeiraCPPclang++10.0.0Success82,312
Mar 26, 2024 20:32E SequeiraE SequeiraCPPclang++10.0.0Success82,560
Mar 26, 2024 20:29E SequeiraE SequeiraCPPclang++10.0.0Success82,690
Mar 26, 2024 20:26E SequeiraE SequeiraCPPclang++10.0.0Success82,202
Mar 26, 2024 20:19E SequeiraE SequeiraCPPclang++10.0.0Success82,538
Mar 26, 2024 20:18E SequeiraE SequeiraCPPclang++10.0.0Success82,095+0.06 RP
Mar 26, 2024 20:15E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 20:14E SequeiraE SequeiraCPPclang++10.0.0Success82,209
Mar 26, 2024 20:13E SequeiraE SequeiraCPPclang++10.0.0Success82,319
Mar 26, 2024 20:11E SequeiraE SequeiraCPPclang++10.0.0Error
Mar 26, 2024 20:05E SequeiraE SequeiraCPPclang++10.0.0Success82,312
Mar 26, 2024 20:04E SequeiraE SequeiraCPPclang++10.0.0Success82,430
Mar 26, 2024 20:03E SequeiraE SequeiraCPPclang++10.0.0Success82,259
Mar 26, 2024 20:03E SequeiraE SequeiraCPPclang++10.0.0Success82,253
Mar 26, 2024 20:02E SequeiraE SequeiraCPPclang++10.0.0Success82,590
Mar 26, 2024 20:01E SequeiraE SequeiraCPPg++9.4.0Success93,765
Mar 26, 2024 20:01E SequeiraE SequeiraCPPclang++10.0.0Success82,660
Mar 26, 2024 20:01E SequeiraE SequeiraCPPclang++10.0.0Success82,555
Mar 26, 2024 20:00E SequeiraE SequeiraCPPclang++10.0.0Success82,134+0.33 RP