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
Sep 26, 2026 18:48Kevin HeaveyKevin HeaveyCSHARP9.0.18Success3,591+2'595.30 RP
Sep 26, 2026 18:46Kevin HeaveyKevin HeaveyGOgo1.26.2Success3,474+1'613.50 RP
Sep 26, 2026 18:45Kevin HeaveyKevin HeaveyZIG0.15.1Success3,415+2'720.94 RP
Sep 26, 2026 18:45Kevin HeaveyKevin HeaveyRUSTrust-1.95.0Success3,358+2'389.66 RP
Sep 26, 2026 11:08Kevin HeaveyKevin HeaveyCPPg++14.2.0Success3,344+74.18 RP
Sep 26, 2026 10:59Kevin HeaveyKevin HeaveyCPPg++14.2.0Success3,386+384.93 RP
Sep 26, 2026 10:46Kevin HeaveyKevin HeaveyCPPg++14.2.0Success3,775+11.18 RP
Sep 26, 2026 10:45Kevin HeaveyKevin HeaveyCPPg++14.2.0Success3,791+164.42 RP
Sep 26, 2026 10:39Kevin HeaveyKevin HeaveyCPPg++14.2.0Success4,043+149.45 RP
Sep 26, 2026 10:22Kevin HeaveyKevin HeaveyCPPg++14.2.0Error
Sep 26, 2026 10:20Kevin HeaveyKevin HeaveyCPPg++14.2.0Success4,303+465.57 RP
Sep 26, 2026 10:05Kevin HeaveyKevin HeaveyCPPg++14.2.0Success5,381+1'858.39 RP
Sep 25, 2026 22:16Kevin HeaveyKevin HeaveyCPPg++13.3.0Error
Sep 25, 2026 22:16Kevin HeaveyKevin HeaveyCPPg++13.3.0Error
Sep 25, 2026 21:47Kevin HeaveyKevin HeaveyCPPg++13.3.0Error
Sep 25, 2026 21:40Kevin HeaveyKevin HeaveyCPPg++13.3.0Error
Sep 23, 2026 19:48Matthias GörgensMatthias GörgensCPPclang++19.1.1Success294,527+8.75 RP
Sep 23, 2026 18:15Matthias GörgensMatthias GörgensCPPclang++19.1.1Success396,781+25.20 RP
Sep 23, 2026 17:45lh14576lh14576CPPg++10.5.0Success50,939+30.35 RP
Sep 23, 2026 13:38TitanTitanRUSTrust-1.95.0Success16,998+253.54 RP
Sep 23, 2026 13:34TitanTitanRUSTrust-1.95.0Success21,667+491.92 RP
Sep 23, 2026 13:20TitanTitanRUSTrust-1.95.0Success468,965
Sep 23, 2026 13:12TitanTitanRUSTrust-1.95.0Success191,977
Sep 23, 2026 12:58TitanTitanRUSTrust-1.95.0Success61,486
Sep 23, 2026 12:51TitanTitanRUSTrust-1.95.0Success59,931+66.18 RP
Sep 23, 2026 12:47TitanTitanRUSTrust-1.95.0Success99,325+72.87 RP
Sep 23, 2026 12:47lh14576lh14576CPPg++10.5.0Success60,253+42.64 RP
Sep 23, 2026 12:15TitanTitanRUSTrust-1.95.0Success367,891
Sep 23, 2026 12:05TitanTitanRUSTrust-1.95.0Success359,591+27.81 RP
Sep 19, 2026 13:55Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success400,077
Sep 19, 2026 13:28Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success39,724
Sep 17, 2026 14:14Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success6,217
Sep 17, 2026 14:08Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success4,717
Sep 17, 2026 14:08Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success4,175+2'148.08 RP
Sep 17, 2026 13:37Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success40,775
Sep 17, 2026 13:35Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success46,700
Sep 17, 2026 13:22Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success1,504,072
Sep 17, 2026 13:04Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success401,051
Sep 17, 2026 05:01Haha ExpertHaha ExpertCPPg++13.3.0Success80,179
Sep 17, 2026 05:00Haha ExpertHaha ExpertCPPg++10.5.0Success79,405+5.10 RP
Sep 16, 2026 00:20Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 23:33Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success40,465+0.71 RP
Sep 15, 2026 23:30Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success501,722
Sep 15, 2026 23:29Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success40,581+4.66 RP
Sep 15, 2026 23:28Andrew EpsteinAndrew EpsteinCPPclang++20.1.2Success43,436
Sep 15, 2026 23:27Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success41,363+11.87 RP
Sep 15, 2026 23:25Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success45,044
Sep 15, 2026 23:23Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success46,543
Sep 15, 2026 23:22Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success43,498+3.08 RP
Sep 15, 2026 23:19Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success64,763
Sep 15, 2026 23:15Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success46,462
Sep 15, 2026 23:11Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success53,689
Sep 15, 2026 22:42Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 22:33Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 22:27Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 22:24Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 22:19Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 21:54Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 21:12Josu San MartinJosu San MartinCPPg++13.3.0Success4,341+1'038.59 RP
Sep 15, 2026 21:11Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 20:56Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 20:45Josu San MartinJosu San MartinCPPg++13.3.0Error+113.06 RP
Sep 15, 2026 20:43Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 20:42Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 20:40Josu San MartinJosu San MartinCPPg++13.3.0Error+340.55 RP
Sep 15, 2026 19:18Josu San MartinJosu San MartinCPPg++13.3.0Error+7.48 RP
Sep 15, 2026 19:14Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 19:13Josu San MartinJosu San MartinCPPg++13.3.0Error+497.09 RP
Sep 15, 2026 19:10Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 16:38Josu San MartinJosu San MartinCPPg++13.3.0Error
Sep 15, 2026 02:11Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 15, 2026 02:05Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 15, 2026 01:24Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 15, 2026 00:46Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 15, 2026 00:22Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 23:25Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 22:50Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 22:30Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 22:22Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 21:23Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 20:52Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 20:12Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 18:54Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 18:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 18:12Victor MerckléVictor MerckléCPPg++13.3.0Error
Sep 14, 2026 18:00Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 17:46Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 17:32Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 16:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 16:13Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 15:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 15:13Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 14:29Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 13:16Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 12:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 12:15Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 11:41Victor MerckléVictor MerckléCPPg++14.2.0Success326,663
Sep 14, 2026 11:27Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 10:25Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 10:05Victor MerckléVictor MerckléCPPg++14.2.0Error