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 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
Sep 14, 2026 09:03Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 08:34Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 08:11Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 07:44Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 14, 2026 06:55Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 12, 2026 16:34Haha ExpertHaha ExpertCPPg++14.2.0Success98,401
Sep 12, 2026 16:18Haha ExpertHaha ExpertCPPg++14.2.0Success82,753+8.62 RP
Sep 12, 2026 16:14Haha ExpertHaha ExpertCPPg++14.2.0Error
Sep 12, 2026 16:11Haha ExpertHaha ExpertCPPg++14.2.0Success89,106+16.00 RP
Sep 12, 2026 16:06Haha ExpertHaha ExpertCPPg++14.2.0Success103,925+9.58 RP
Sep 12, 2026 15:29Haha ExpertHaha ExpertCPPg++14.2.0Error
Sep 12, 2026 11:16Haha ExpertHaha ExpertCPPg++14.2.0Success117,191
Sep 12, 2026 11:08Haha ExpertHaha ExpertCPPg++14.2.0Success144,667
Sep 12, 2026 10:46Haha ExpertHaha ExpertCPPg++14.2.0Error+51.67 RP
Sep 11, 2026 13:30Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success44,153
Sep 11, 2026 12:47Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success45,055+5.00 RP
Sep 11, 2026 05:05Haha ExpertHaha ExpertCSHARP10.0.11Success302,263+5.00 RP
Sep 10, 2026 18:19Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 10, 2026 17:59Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 10, 2026 17:00Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 10, 2026 16:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 10, 2026 16:04Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 10, 2026 13:57lh14576lh14576CPPg++10.5.0Error+50.54 RP
Sep 10, 2026 09:54Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 10, 2026 03:32Andrew EpsteinAndrew EpsteinCPPg++14.2.0Success44,089+28.72 RP
Sep 9, 2026 14:00Victor MerckléVictor MerckléCPPg++14.2.0Success5,589
Sep 9, 2026 13:49Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 9, 2026 13:29Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 21:29Victor MerckléVictor MerckléCPPg++14.2.0Error