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
May 25, 2025 17:04E SequeiraE SequeiraCPPclang++18.1.3Success71,897+0.03 RP
May 25, 2025 17:03E SequeiraE SequeiraCPPclang++18.1.3Success71,910+0.08 RP
May 25, 2025 17:01E SequeiraE SequeiraCPPclang++18.1.3Success72,224
May 25, 2025 17:00E SequeiraE SequeiraCPPclang++18.1.3Success72,238
May 25, 2025 16:59E SequeiraE SequeiraCPPclang++18.1.3Success71,950+0.48 RP
May 25, 2025 16:59E SequeiraE SequeiraCPPclang++18.1.3Success72,224
May 25, 2025 16:58E SequeiraE SequeiraCPPclang++18.1.3Success72,198+0.06 RP
May 25, 2025 16:56E SequeiraE SequeiraCPPclang++18.1.3Success72,581
May 25, 2025 16:55E SequeiraE SequeiraCPPclang++18.1.3Success72,228+0.37 RP
May 25, 2025 16:54E SequeiraE SequeiraCPPclang++18.1.3Success72,421+0.15 RP
May 25, 2025 16:53E SequeiraE SequeiraCPPclang++18.1.3Success73,286
May 25, 2025 16:52E SequeiraE SequeiraCPPclang++18.1.3Success72,500+0.56 RP
May 25, 2025 16:50E SequeiraE SequeiraCPPclang++18.1.3Success72,921
May 25, 2025 16:49E SequeiraE SequeiraCPPclang++18.1.3Success72,976
May 25, 2025 16:48E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 16:46E SequeiraE SequeiraCPPclang++18.1.3Success73,157
May 25, 2025 16:44E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 16:36E SequeiraE SequeiraCPPclang++18.1.3Success74,264
May 25, 2025 16:35E SequeiraE SequeiraCPPclang++18.1.3Success73,210
May 25, 2025 16:35E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 16:33E SequeiraE SequeiraCPPclang++18.1.3Success79,116
May 25, 2025 16:26E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:45E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:43E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:42E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:41E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:35E SequeiraE SequeiraGOgo1.24.3Success114,645
May 25, 2025 14:34E SequeiraE SequeiraGOgo1.24.3Success115,371
May 25, 2025 14:31E SequeiraE SequeiraGOgo1.24.3Success115,350
May 25, 2025 14:29E SequeiraE SequeiraGOgo1.24.3Error
May 25, 2025 14:26E SequeiraE SequeiraGOgo1.24.3Success131,212
May 25, 2025 14:23E SequeiraE SequeiraGOgo1.22.6Error
May 25, 2025 14:20E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:16E SequeiraE SequeiraCPPclang++18.1.3Success73,059
May 25, 2025 14:15E SequeiraE SequeiraCPPclang++18.1.3Success73,036
May 25, 2025 14:15E SequeiraE SequeiraCPPclang++18.1.3Success73,033
May 25, 2025 14:13E SequeiraE SequeiraCPPclang++18.1.3Success72,797+0.98 RP
May 25, 2025 14:13E SequeiraE SequeiraCPPclang++18.1.3Success73,319+0.92 RP
May 25, 2025 14:12E SequeiraE SequeiraCPPclang++18.1.3Success75,393
May 25, 2025 14:12E SequeiraE SequeiraCPPclang++18.1.3Success75,931
May 25, 2025 14:11E SequeiraE SequeiraCPPclang++18.1.3Success74,626
May 25, 2025 14:11E SequeiraE SequeiraCPPclang++18.1.3Success74,347
May 25, 2025 14:09E SequeiraE SequeiraCPPclang++18.1.3Success100,378
May 25, 2025 14:09E SequeiraE SequeiraCPPclang++18.1.3Success99,516
May 25, 2025 14:07E SequeiraE SequeiraCPPclang++18.1.3Success99,800
May 25, 2025 14:06E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 14:05E SequeiraE SequeiraCPPclang++18.1.3Success75,674
May 25, 2025 14:03E SequeiraE SequeiraGOgo1.24.3Error
May 25, 2025 14:02E SequeiraE SequeiraGOgo1.24.3Error
May 25, 2025 14:02E SequeiraE SequeiraGOgo1.24.3Error
May 25, 2025 14:02E SequeiraE SequeiraGOgo1.24.3Error
May 25, 2025 13:59E SequeiraE SequeiraGOgo1.23.3Error
May 24, 2025 23:05Daniel SavuDaniel SavuRUSTrust-1.87.0Success267,579
May 24, 2025 21:54Daniel SavuDaniel SavuRUSTrust-1.87.0Success286,274
May 24, 2025 21:53Daniel SavuDaniel SavuRUSTrust-1.87.0Error
May 24, 2025 19:12Daniel SavuDaniel SavuRUSTrust-1.87.0Error
May 24, 2025 00:09Daniel SavuDaniel SavuRUSTrust-1.87.0Success262,716+38.06 RP
May 23, 2025 23:23Daniel SavuDaniel SavuRUSTrust-1.87.0Error
May 23, 2025 17:49KeefeKeefeCPPg++13.3.0Success82,933+4.78 RP
May 23, 2025 17:47KeefeKeefeCPPg++13.3.0Success86,357+21.07 RP
May 14, 2025 02:07Carl BergmanCarl BergmanRUSTrust-1.86.0Success437,610
May 13, 2025 16:47Carl BergmanCarl BergmanRUSTrust-1.86.0Success329,171
May 13, 2025 16:12Emanuele BolognesiEmanuele BolognesiRUSTrust-1.86.0Success684,324+2.44 RP
May 13, 2025 16:11Emanuele BolognesiEmanuele BolognesiRUSTrust-1.86.0Error
May 13, 2025 15:25Emanuele BolognesiEmanuele BolognesiRUSTrust-1.86.0Success821,698+0.50 RP
May 13, 2025 15:14Emanuele BolognesiEmanuele BolognesiRUSTrust-1.86.0Success985,850
May 13, 2025 15:05Emanuele BolognesiEmanuele BolognesiRUSTrust-1.86.0Success856,902+3.71 RP
May 13, 2025 15:02Emanuele BolognesiEmanuele BolognesiRUSTrust-1.86.0Error
May 12, 2025 02:43Carl BergmanCarl BergmanRUSTrust-1.86.0Error
May 12, 2025 02:35Carl BergmanCarl BergmanRUSTrust-1.86.0Error
May 12, 2025 02:32Carl BergmanCarl BergmanRUSTrust-1.86.0Error
May 12, 2025 02:31Carl BergmanCarl BergmanRUSTrust-1.86.0Error
May 12, 2025 02:25Carl BergmanCarl BergmanRUSTrust-1.86.0Error
May 10, 2025 14:55Tejas G.Tejas G.CPPclang++18.1.3Error
May 10, 2025 14:53Tejas G.Tejas G.CPPclang++18.1.3Error
May 10, 2025 14:53Tejas G.Tejas G.CPPclang++18.1.3Error
May 10, 2025 14:52Tejas G.Tejas G.CPPclang++18.1.3Error
May 10, 2025 14:51Tejas G.Tejas G.CPPclang++18.1.3Error
May 9, 2025 16:44Amit RahmanAmit RahmanCPPg++13.3.0Success1,299,402+7.70 RP
May 9, 2025 13:14Tejas G.Tejas G.CPPclang++18.1.3Success129,366
May 9, 2025 13:13Tejas G.Tejas G.CPPg++13.3.0Success138,719
May 9, 2025 13:13Tejas G.Tejas G.CPPclang++18.1.3Success129,267
May 9, 2025 13:10Tejas G.Tejas G.CPPclang++18.1.3Success129,103
May 9, 2025 13:09Tejas G.Tejas G.CPPclang++18.1.3Success129,472
May 9, 2025 11:58Tejas G.Tejas G.CPPclang++18.1.3Error
May 9, 2025 11:58Tejas G.Tejas G.CPPclang++18.1.3Error
May 9, 2025 11:57Tejas G.Tejas G.CPPclang++18.1.3Success160,521
May 9, 2025 11:55Tejas G.Tejas G.CPPclang++18.1.3Success162,171
May 9, 2025 11:55Tejas G.Tejas G.CPPclang++18.1.3Success162,379
May 9, 2025 11:55Tejas G.Tejas G.CPPclang++18.1.3Success159,097
May 9, 2025 11:54Tejas G.Tejas G.CPPclang++18.1.3Success155,453
May 9, 2025 11:54Tejas G.Tejas G.CPPclang++18.1.3Success160,109
May 9, 2025 11:53Tejas G.Tejas G.CPPclang++18.1.3Success153,884
May 9, 2025 11:53Tejas G.Tejas G.CPPclang++18.1.3Success160,091
May 9, 2025 11:52Tejas G.Tejas G.CPPclang++18.1.3Success160,471
May 9, 2025 11:52Tejas G.Tejas G.CPPg++13.3.0Success168,097
May 9, 2025 11:51Tejas G.Tejas G.CPPclang++18.1.3Success159,136
May 9, 2025 11:48Tejas G.Tejas G.CPPclang++18.1.3Success129,321
May 9, 2025 11:26Tejas G.Tejas G.CPPclang++18.1.3Error
May 9, 2025 11:26Tejas G.Tejas G.CPPclang++18.1.3Error