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 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.0Error+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.0Error+8.62 RP
Sep 12, 2026 16:14Haha ExpertHaha ExpertCPPg++14.2.0Error
Sep 12, 2026 16:11Haha ExpertHaha ExpertCPPg++14.2.0Error+16.00 RP
Sep 12, 2026 16:06Haha ExpertHaha ExpertCPPg++14.2.0Error+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.0Error
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
Sep 8, 2026 21:14Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 20:55Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 20:41Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 19:35Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 18:55Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 18:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 8, 2026 17:50Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 7, 2026 09:01Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Success333,177
Sep 7, 2026 09:00Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Success333,681
Sep 7, 2026 08:58Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Success319,329
Sep 7, 2026 08:57Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Success318,175
Sep 7, 2026 08:53Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Success299,727
Sep 7, 2026 08:51Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Success299,536
Sep 7, 2026 08:45Tomislav TunkovicTomislav TunkovicCPPg++13.3.0Error
Sep 5, 2026 01:31Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Sep 5, 2026 01:16Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 5, 2026 00:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Sep 4, 2026 18:27Tomislav TunkovicTomislav TunkovicRUSTrust-1.95.0Error
Sep 4, 2026 18:06Tomislav TunkovicTomislav TunkovicCPPclang++19.1.1Error
Sep 4, 2026 18:02Tomislav TunkovicTomislav TunkovicRUSTrust-1.95.0Error
Sep 4, 2026 18:01Victor MerckléVictor MerckléZIG0.16.0Error