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
Jul 13, 2025 19:42Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success86,855
Jul 13, 2025 19:20Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success82,129+4.40 RP
Jul 13, 2025 18:57Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success87,264
Jul 13, 2025 18:55Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success85,210+0.73 RP
Jul 13, 2025 18:54Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success5,067,814
Jul 13, 2025 18:54Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success3,012,647
Jul 13, 2025 17:46Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success85,740+2.82 RP
Jul 13, 2025 17:37Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success87,864+33.89 RP
Jul 13, 2025 17:13Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success129,195
Jul 13, 2025 16:59Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Error
Jul 13, 2025 16:56Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Error
Jul 13, 2025 16:56Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Error
Jul 13, 2025 16:55Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Error
Jul 13, 2025 16:55Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success126,033
Jul 13, 2025 16:55Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success125,124+1.20 RP
Jul 13, 2025 16:54Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success127,031+7.95 RP
Jul 13, 2025 16:51Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success141,810
Jul 13, 2025 16:50Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success146,269
Jul 13, 2025 16:47Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success144,979
Jul 13, 2025 16:43Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success141,305+3.01 RP
Jul 13, 2025 16:40Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Error
Jul 11, 2025 14:43CadovvlCadovvlCPPg++13.3.0Success228,003
Jul 11, 2025 14:24CadovvlCadovvlCPPclang++18.1.3Success1,002,241
Jul 11, 2025 14:24CadovvlCadovvlCPPg++13.3.0Success226,728+0.04 RP
Jul 11, 2025 14:04CadovvlCadovvlCPPg++13.3.0Success226,943+0.81 RP
Jul 11, 2025 13:39CadovvlCadovvlCPPg++13.3.0Success231,184+29.48 RP
Jul 11, 2025 13:39CadovvlCadovvlCPPclang++18.1.3Success1,009,219
Jul 11, 2025 11:54CadovvlCadovvlCPPclang++18.1.3Success725,957+0.20 RP
Jul 11, 2025 10:59CadovvlCadovvlCPPg++13.3.0Success736,436+0.94 RP
Jul 11, 2025 10:48CadovvlCadovvlCPPg++13.3.0Success791,198+12.64 RP
Jul 11, 2025 08:28CadovvlCadovvlCPPg++13.3.0Error
Jul 11, 2025 08:13CadovvlCadovvlCPPg++13.3.0Error
Jul 11, 2025 01:28Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success147,586+0.51 RP
Jul 11, 2025 01:22Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success149,386
Jul 11, 2025 01:20Alexey IlyukhovAlexey IlyukhovCPPclang++18.1.3Success163,976
Jul 11, 2025 01:20Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success148,712+28.42 RP
Jul 10, 2025 22:19Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Error
Jul 10, 2025 22:09Alexey IlyukhovAlexey IlyukhovCPPg++13.3.0Success257,586+38.82 RP
Jul 7, 2025 23:10Aniruddha DebAniruddha DebCPPg++13.3.0Success16,493
Jul 7, 2025 23:06Aniruddha DebAniruddha DebCPPg++13.3.0Error
Jul 7, 2025 23:03Aniruddha DebAniruddha DebCPPg++13.3.0Error
Jul 7, 2025 22:51Aniruddha DebAniruddha DebCPPg++13.3.0Error
Jul 7, 2025 22:50Aniruddha DebAniruddha DebCPPg++13.3.0Error
Jul 7, 2025 22:49Aniruddha DebAniruddha DebCPPg++13.3.0Error
Jun 21, 2025 20:50Aniruddha DebAniruddha DebCPPg++13.3.0Success18,852
Jun 19, 2025 21:03parastromparastromRUSTrust-1.87.0Success1,707,831
Jun 19, 2025 20:35parastromparastromRUSTrust-1.87.0Error
Jun 19, 2025 20:31parastromparastromRUSTrust-1.87.0Error
Jun 19, 2025 18:13parastromparastromRUSTrust-1.85.1Error
Jun 19, 2025 18:12parastromparastromRUSTrust-1.85.1Error
May 31, 2025 16:06KeefeKeefeCPPg++13.3.0Success545,798
May 31, 2025 16:05KeefeKeefeCPPg++13.3.0Error
May 31, 2025 15:55KeefeKeefeCPPclang++18.1.3Success91,297
May 26, 2025 18:20E SequeiraE SequeiraCPPclang++18.1.3Error
May 26, 2025 18:08E SequeiraE SequeiraCPPclang++18.1.3Success71,947
May 26, 2025 18:07E SequeiraE SequeiraCPPclang++18.1.3Success72,616
May 26, 2025 18:07E SequeiraE SequeiraCPPclang++18.1.3Success72,284
May 26, 2025 18:05E SequeiraE SequeiraCPPg++13.3.0Success89,022
May 26, 2025 18:05E SequeiraE SequeiraCPPclang++18.1.3Success72,188
May 26, 2025 18:03E SequeiraE SequeiraCPPclang++18.1.3Success71,450
May 26, 2025 18:00E SequeiraE SequeiraCPPclang++18.1.3Success70,483+0.05 RP
May 25, 2025 22:26E SequeiraE SequeiraGOgo1.24.3Success104,984
May 25, 2025 22:25E SequeiraE SequeiraGOgo1.24.3Success104,964
May 25, 2025 22:24E SequeiraE SequeiraGOgo1.24.3Success105,614
May 25, 2025 22:22E SequeiraE SequeiraGOgo1.24.3Success105,422
May 25, 2025 22:21E SequeiraE SequeiraGOgo1.24.3Success104,581
May 25, 2025 22:20E SequeiraE SequeiraGOgo1.24.3Success105,222
May 25, 2025 22:19KeefeKeefeCPPg++13.3.0Error
May 25, 2025 22:18E SequeiraE SequeiraGOgo1.24.3Success110,897
May 25, 2025 22:18E SequeiraE SequeiraGOgo1.24.3Error
May 25, 2025 22:17KeefeKeefeCPPg++13.3.0Error
May 25, 2025 22:15E SequeiraE SequeiraCPPclang++18.1.3Success70,528
May 25, 2025 22:13E SequeiraE SequeiraCPPclang++18.1.3Success70,510
May 25, 2025 22:12E SequeiraE SequeiraCPPclang++18.1.3Success70,729
May 25, 2025 22:10E SequeiraE SequeiraCPPclang++18.1.3Success70,679
May 25, 2025 22:08E SequeiraE SequeiraCPPclang++18.1.3Success70,652
May 25, 2025 22:07E SequeiraE SequeiraCPPclang++18.1.3Success70,507+0.11 RP
May 25, 2025 22:05E SequeiraE SequeiraCPPclang++18.1.3Success70,560+1.97 RP
May 25, 2025 22:04E SequeiraE SequeiraCPPclang++18.1.3Success71,983
May 25, 2025 22:03E SequeiraE SequeiraCPPclang++18.1.3Success71,557+0.05 RP
May 25, 2025 21:58E SequeiraE SequeiraCPPclang++18.1.3Success76,372
May 25, 2025 21:53E SequeiraE SequeiraCPPclang++18.1.3Success72,207
May 25, 2025 21:53E SequeiraE SequeiraCPPclang++18.1.3Success77,703
May 25, 2025 21:52E SequeiraE SequeiraCPPclang++18.1.3Success74,328
May 25, 2025 21:50E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 21:49E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 21:47E SequeiraE SequeiraCPPclang++18.1.3Success71,695
May 25, 2025 21:47E SequeiraE SequeiraCPPclang++18.1.3Success72,217
May 25, 2025 21:46E SequeiraE SequeiraCPPclang++18.1.3Success71,584+0.51 RP
May 25, 2025 21:43E SequeiraE SequeiraCPPclang++18.1.3Error
May 25, 2025 17:10E SequeiraE SequeiraCPPclang++18.1.3Success79,179
May 25, 2025 17:08E SequeiraE SequeiraCPPclang++18.1.3Success71,847+0.10 RP
May 25, 2025 17:07E SequeiraE SequeiraCPPclang++18.1.3Success72,298
May 25, 2025 17:07E SequeiraE SequeiraCPPclang++18.1.3Success72,226
May 25, 2025 17:06E SequeiraE SequeiraCPPclang++18.1.3Success71,910
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