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 19, 2024 08:13E SequeiraE SequeiraCPPg++9.4.0Success78,576
Apr 19, 2024 08:13E SequeiraE SequeiraCPPg++9.4.0Error
Apr 19, 2024 08:12E SequeiraE SequeiraCPPg++9.4.0Error
Apr 19, 2024 08:12E SequeiraE SequeiraCPPg++9.4.0Error
Apr 19, 2024 08:05E SequeiraE SequeiraCPPg++9.4.0Success78,383
Apr 19, 2024 08:04E SequeiraE SequeiraCPPg++9.4.0Success78,566
Apr 19, 2024 08:04E SequeiraE SequeiraCPPg++9.4.0Success78,257
Apr 19, 2024 08:03E SequeiraE SequeiraCPPg++9.4.0Error
Apr 19, 2024 07:59E SequeiraE SequeiraCPPg++9.4.0Success79,274
Apr 19, 2024 05:49E SequeiraE SequeiraCPPg++9.4.0Success87,324
Apr 19, 2024 05:46E SequeiraE SequeiraCPPclang++10.0.0Success96,987
Apr 19, 2024 05:46E SequeiraE SequeiraCPPclang++10.0.0Success98,988
Apr 19, 2024 05:46E SequeiraE SequeiraCPPclang++10.0.0Success76,738
Apr 19, 2024 05:43E SequeiraE SequeiraCPPclang++10.0.0Success76,610
Apr 19, 2024 05:43E SequeiraE SequeiraCPPg++9.4.0Success91,504
Apr 19, 2024 05:42E SequeiraE SequeiraCPPg++9.4.0Success79,293
Apr 19, 2024 05:41E SequeiraE SequeiraCPPg++9.4.0Success79,376
Apr 19, 2024 05:41E SequeiraE SequeiraCPPg++9.4.0Success87,280
Apr 19, 2024 05:40E SequeiraE SequeiraCPPg++9.4.0Success87,142
Apr 19, 2024 05:39E SequeiraE SequeiraCPPclang++10.0.0Success97,664
Apr 19, 2024 05:38E SequeiraE SequeiraCPPclang++10.0.0Success88,605
Apr 19, 2024 05:37E SequeiraE SequeiraCPPclang++10.0.0Success87,145
Apr 19, 2024 05:35E SequeiraE SequeiraCPPclang++10.0.0Success92,385
Apr 19, 2024 05:33E SequeiraE SequeiraCPPclang++10.0.0Success90,165
Apr 19, 2024 05:32E SequeiraE SequeiraCPPclang++10.0.0Success90,721
Apr 19, 2024 05:30E SequeiraE SequeiraCPPclang++10.0.0Success91,500
Apr 19, 2024 05:29E SequeiraE SequeiraCPPclang++10.0.0Success91,233
Apr 19, 2024 05:29E SequeiraE SequeiraCPPclang++10.0.0Success91,826
Apr 19, 2024 05:17E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 19, 2024 05:16E SequeiraE SequeiraCPPclang++10.0.0Success88,506
Apr 19, 2024 05:16E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 19, 2024 05:15E SequeiraE SequeiraCPPclang++10.0.0Success89,612
Apr 17, 2024 20:08E SequeiraE SequeiraCPPclang++10.0.0Success77,143
Apr 17, 2024 20:05E SequeiraE SequeiraCPPclang++10.0.0Success89,714
Apr 17, 2024 20:04E SequeiraE SequeiraCPPclang++10.0.0Success89,005
Apr 17, 2024 20:04E SequeiraE SequeiraCPPclang++10.0.0Success89,076
Apr 17, 2024 20:02E SequeiraE SequeiraCPPclang++10.0.0Success89,218
Apr 17, 2024 20:02E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:55E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:53E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:53E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:52E SequeiraE SequeiraCPPclang++10.0.0Success89,720
Apr 17, 2024 19:50E SequeiraE SequeiraCPPclang++10.0.0Success89,793
Apr 17, 2024 19:48E SequeiraE SequeiraCPPclang++10.0.0Success89,950
Apr 17, 2024 19:48E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:46E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:36E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:34E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:34E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:31E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:29E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:23E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:21E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:20E SequeiraE SequeiraCPPclang++10.0.0Success77,391
Apr 17, 2024 19:18E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:18E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:17E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:15E SequeiraE SequeiraCPPclang++10.0.0Success77,390
Apr 17, 2024 19:14E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 17, 2024 19:12E SequeiraE SequeiraCPPclang++10.0.0Success77,509
Apr 17, 2024 19:10E SequeiraE SequeiraCPPclang++10.0.0Success76,462
Apr 17, 2024 15:14Joad NacerJoad NacerCPPg++9.4.0Error
Apr 15, 2024 01:55DeletedDeletedRUSTrust-1.77.2Error
Apr 14, 2024 19:08korey-skorey-sRUSTrust-1.77.2Success1,835,046
Apr 14, 2024 10:17E SequeiraE SequeiraCPPclang++10.0.0Success79,585
Apr 14, 2024 06:56korey-skorey-sRUSTrust-1.77.2Success132,701+4.23 RP
Apr 14, 2024 05:47korey-skorey-sRUSTrust-1.77.2Error
Apr 14, 2024 04:36E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 14, 2024 04:30E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 14, 2024 04:27E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 14, 2024 04:25E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 14, 2024 04:11E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 16:22E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:55E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:55E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:53E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:52E SequeiraE SequeiraCPPclang++10.0.0Success91,226
Apr 13, 2024 15:50E SequeiraE SequeiraCPPclang++10.0.0Success88,606
Apr 13, 2024 15:48E SequeiraE SequeiraCPPclang++10.0.0Success88,028
Apr 13, 2024 15:46E SequeiraE SequeiraCPPclang++10.0.0Success87,910
Apr 13, 2024 15:45E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:41E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:39E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:38E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:37E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:36E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:35E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:33E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:32E SequeiraE SequeiraCPPclang++10.0.0Success78,805
Apr 13, 2024 15:30E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:11E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 15:10E SequeiraE SequeiraCPPclang++10.0.0Error
Apr 13, 2024 13:51E SequeiraE SequeiraCPPclang++10.0.0Success77,390
Apr 13, 2024 13:43E SequeiraE SequeiraCPPclang++10.0.0Success77,395
Apr 13, 2024 13:42E SequeiraE SequeiraCPPclang++10.0.0Success79,090
Apr 13, 2024 13:40E SequeiraE SequeiraCPPclang++10.0.0Success78,831
Apr 13, 2024 13:28E SequeiraE SequeiraCPPclang++10.0.0Success77,431
Apr 13, 2024 13:27E SequeiraE SequeiraCPPclang++10.0.0Success76,733
Apr 13, 2024 13:27E SequeiraE SequeiraCPPg++9.4.0Success91,534
Apr 13, 2024 13:14E SequeiraE SequeiraCPPg++9.4.0Error