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
Jun 19, 2026 15:08Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 19, 2026 15:03Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 19, 2026 14:58Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 19, 2026 14:56Zhou180Zhou180RUSTrust-1.95.0Error+1'390.36 RP
Jun 19, 2026 14:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 19, 2026 06:02Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 19, 2026 05:54Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 21:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 21:32Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 21:27Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 21:22Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 14:16Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 14:11Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 14:06Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 14:01Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 13:54Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:32Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:27Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:22Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:17Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 03:12Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 18, 2026 02:58Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 21:19Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 21:14Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 21:09Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 21:04Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 20:59Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 18:49Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 18:44Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 18:33Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 15, 2026 23:16Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 23:11Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 23:06Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 23:01Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 22:56Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 22:51Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 22:46Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 22:41Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 22:32Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 11:25Praveen KumarPraveen KumarGOgo1.26.2Success1,291,439+7.74 RP
Jun 13, 2026 18:26Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 13, 2026 18:08Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 13, 2026 18:02Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 13, 2026 17:45Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 13, 2026 17:40Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 13, 2026 17:24Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 13, 2026 01:04Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 13, 2026 00:47Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 13, 2026 00:28Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 13, 2026 00:09Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 12, 2026 23:17Victor MerckléVictor MerckléCSHARP10.0.7Error
Jun 12, 2026 23:11Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 12, 2026 23:06Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 12, 2026 22:51Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 12, 2026 22:46Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 12, 2026 20:35Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Jun 12, 2026 20:03Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Jun 12, 2026 19:53Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Jun 12, 2026 19:42Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Jun 12, 2026 19:31Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Jun 12, 2026 13:01Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:56Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:48Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:31Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:26Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:16Victor MerckléVictor MerckléCPPg++14.2.0Error+5.00 RP
Jun 11, 2026 14:09Victor MerckléVictor MerckléZIG0.16.0Error
Jun 11, 2026 13:51Victor MerckléVictor MerckléZIG0.16.0Error
Jun 11, 2026 13:25Victor MerckléVictor MerckléZIG0.16.0Error
Jun 11, 2026 08:29Zhou180Zhou180RUSTrust-1.95.0Error+11.90 RP
Jun 11, 2026 08:26Victor MerckléVictor MerckléZIG0.16.0Error
Jun 11, 2026 08:22Weitao WanWeitao WanCPPg++14.2.0Error+10.69 RP
Jun 11, 2026 08:17Weitao WanWeitao WanCPPclang++20.1.2Error+19.97 RP
Jun 11, 2026 07:35Zhou180Zhou180RUSTrust-1.95.0Error+18.28 RP
Jun 11, 2026 07:29Weitao WanWeitao WanCPPg++14.2.0Error+48.44 RP
Jun 11, 2026 07:13Weitao WanWeitao WanCPPg++14.2.0Success82,008
Jun 11, 2026 07:05Zhou180Zhou180RUSTrust-1.95.0Success183,620
Jun 11, 2026 06:29Zhou180Zhou180RUSTrust-1.95.0Success185,091
Jun 10, 2026 21:54Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:49Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:44Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:39Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:34Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:29Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:12Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:02Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 20:55Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 20:50Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 20:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 20:33Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 8, 2026 18:34Victor MerckléVictor MerckléRUSTrust-1.95.0Error
Jun 8, 2026 17:33Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 8, 2026 17:28Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 8, 2026 17:23Victor MerckléVictor MerckléCPPg++14.2.0Error+8.02 RP
Jun 8, 2026 17:13Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 8, 2026 16:50Victor MerckléVictor MerckléCPPg++14.2.0Error