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
Aug 15, 2026 11:59marko1597marko1597CPPclang++17.0.6Error
Aug 15, 2026 11:59marko1597marko1597CPPclang++18.1.3Error+13.91 RP
Aug 15, 2026 11:56marko1597marko1597CPPclang++19.1.1Error+0.39 RP
Aug 15, 2026 11:53marko1597marko1597CPPclang++19.1.1Error
Aug 15, 2026 11:46marko1597marko1597CPPclang++19.1.1Success1,262,744
Aug 15, 2026 11:45Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error
Aug 15, 2026 11:42marko1597marko1597CPPclang++19.1.1Error
Aug 15, 2026 11:41marko1597marko1597CPPclang++19.1.1Error+5.24 RP
Aug 15, 2026 11:38marko1597marko1597CPPclang++19.1.1Success1,291,567
Aug 15, 2026 11:35marko1597marko1597CPPclang++19.1.1Error+1.49 RP
Aug 15, 2026 11:34marko1597marko1597CPPclang++18.1.3Error+7.44 RP
Aug 15, 2026 11:31marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 11:29marko1597marko1597CPPg++14.2.0Error
Aug 15, 2026 11:29marko1597marko1597CPPclang++17.0.6Error
Aug 15, 2026 11:28marko1597marko1597CPPclang++18.1.3Error+4.09 RP
Aug 15, 2026 11:27marko1597marko1597CPPclang++19.1.1Error+6.43 RP
Aug 15, 2026 11:24marko1597marko1597CPPclang++20.1.2Success83,075
Aug 15, 2026 08:47marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 08:28marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 08:25marko1597marko1597CPPclang++20.1.2Success854,241
Aug 15, 2026 00:14marko1597marko1597CPPclang++20.1.2Error+1.69 RP
Aug 15, 2026 00:11marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 00:09marko1597marko1597CPPclang++20.1.2Error+4.55 RP
Aug 15, 2026 00:07marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 00:05marko1597marko1597CPPclang++20.1.2Error+49.67 RP
Aug 15, 2026 00:04Tomislav TunkovicTomislav TunkovicCPPg++14.2.0Error
Aug 15, 2026 00:03marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 00:02marko1597marko1597CPPclang++20.1.2Success157,118
Aug 14, 2026 23:59marko1597marko1597CPPclang++20.1.2Success1,471,715
Aug 14, 2026 23:56marko1597marko1597CPPclang++20.1.2Error+3.44 RP
Aug 14, 2026 23:55marko1597marko1597CPPclang++20.1.2Success2,472,960
Aug 14, 2026 23:53marko1597marko1597CPPclang++20.1.2Success3,391,081
Aug 14, 2026 23:50marko1597marko1597CPPclang++20.1.2Error+0.38 RP
Aug 14, 2026 23:42Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+14.08 RP
Aug 14, 2026 23:39marko1597marko1597CPPclang++20.1.2Success1,840,589
Aug 14, 2026 23:34Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error
Aug 14, 2026 23:32marko1597marko1597CPPclang++20.1.2Error+10.16 RP
Aug 14, 2026 23:31marko1597marko1597CPPclang++20.1.2Error+12.67 RP
Aug 14, 2026 23:24marko1597marko1597CPPclang++20.1.2Success10,367,991
Aug 14, 2026 23:22marko1597marko1597CPPclang++20.1.2Error+14.83 RP
Aug 14, 2026 23:20marko1597marko1597CPPg++14.2.0Success200,556
Aug 14, 2026 23:14marko1597marko1597CPPg++14.2.0Error+12.10 RP
Aug 14, 2026 23:13Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error
Aug 14, 2026 23:09marko1597marko1597CPPg++14.2.0Error+6.85 RP
Aug 14, 2026 23:07marko1597marko1597CPPg++14.2.0Error
Aug 14, 2026 22:58marko1597marko1597CPPg++14.2.0Error+149.98 RP
Aug 14, 2026 22:50marko1597marko1597CPPg++14.2.0Error
Aug 14, 2026 22:32Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+333.91 RP
Aug 14, 2026 22:29marko1597marko1597CPPg++14.2.0Error+17.68 RP
Aug 14, 2026 22:04marko1597marko1597CPPg++14.2.0Error+28.99 RP
Aug 14, 2026 21:48Tomislav TunkovicTomislav TunkovicCPPg++14.2.0Error+31.75 RP
Aug 13, 2026 14:29Yehor BondarYehor BondarCPPclang++18.1.3Error+26.83 RP
Aug 13, 2026 14:15Yehor BondarYehor BondarCPPclang++20.1.2Success1,287,525+7.77 RP
Aug 3, 2026 15:08Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 15:03Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:58Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:48Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:33Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:32Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:19Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:14Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:09Victor MerckléVictor MerckléCPPg++14.2.0Error
Aug 3, 2026 14:04Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 31, 2026 06:15TonyTonyCPPg++10.5.0Success1,324,601+7.55 RP
Jul 29, 2026 12:19Marc BrinkmannMarc BrinkmannRUSTrust-1.97.1Success103,858
Jul 29, 2026 12:15Marc BrinkmannMarc BrinkmannRUSTrust-1.95.0Success103,253+0.48 RP
Jul 29, 2026 10:21Marc BrinkmannMarc BrinkmannRUSTrust-1.95.0Error+6.78 RP
Jul 28, 2026 15:110xZohan0xZohanRUSTrust-1.95.0Success80,737
Jul 28, 2026 15:100xZohan0xZohanRUSTrust-1.95.0Success45,665+6.53 RP
Jul 28, 2026 14:190xZohan0xZohanRUSTrust-1.95.0Success49,912
Jul 28, 2026 14:110xZohan0xZohanRUSTrust-1.95.0Success47,784
Jul 28, 2026 14:030xZohan0xZohanRUSTrust-1.95.0Success47,305
Jul 28, 2026 13:470xZohan0xZohanRUSTrust-1.95.0Success48,156
Jul 28, 2026 13:460xZohan0xZohanRUSTrust-1.95.0Success47,743
Jul 28, 2026 13:430xZohan0xZohanRUSTrust-1.95.0Error+36.58 RP
Jul 28, 2026 13:260xZohan0xZohanRUSTrust-1.95.0Success56,856+6.50 RP
Jul 28, 2026 13:160xZohan0xZohanRUSTrust-1.95.0Error+17.43 RP
Jul 28, 2026 13:040xZohan0xZohanRUSTrust-1.95.0Success65,810+5.75 RP
Jul 28, 2026 13:010xZohan0xZohanRUSTrust-1.95.0Success98,610
Jul 28, 2026 12:27Marc BrinkmannMarc BrinkmannRUSTrust-1.95.0Error+89.59 RP
Jul 25, 2026 23:54Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 25, 2026 23:38Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+29.47 RP
Jul 19, 2026 15:55Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success730,070
Jul 19, 2026 15:53Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Jul 19, 2026 15:37Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success734,346
Jul 19, 2026 15:35Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Jul 19, 2026 15:33Uladzislau NestsiarukUladzislau NestsiarukCPPg++14.2.0Success718,829
Jul 19, 2026 15:30Uladzislau NestsiarukUladzislau NestsiarukCPPclang++19.1.1Success711,967
Jul 19, 2026 15:29Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success709,282+6.37 RP
Jul 19, 2026 15:28Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Jul 19, 2026 15:24Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Jul 19, 2026 15:22Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Jul 19, 2026 15:21Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Jul 19, 2026 15:20Uladzislau NestsiarukUladzislau NestsiarukCPPclang++19.1.1Error
Jul 19, 2026 14:21Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success1,294,265+7.73 RP
Jul 15, 2026 23:54Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+7.06 RP
Jul 15, 2026 23:19Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error