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 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
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