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 17, 2026 21:19Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 17, 2026 21:14Victor MerckléVictor MerckléCPPg++14.2.0Success3,348
Jun 17, 2026 21:09Victor MerckléVictor MerckléCPPg++14.2.0Success3,277
Jun 17, 2026 21:04Victor MerckléVictor MerckléCPPg++14.2.0Success3,539
Jun 17, 2026 20:59Victor MerckléVictor MerckléCPPg++14.2.0Success3,400
Jun 17, 2026 18:49Victor MerckléVictor MerckléCPPg++14.2.0Success38,379
Jun 17, 2026 18:44Victor MerckléVictor MerckléCPPg++14.2.0Success3,150+5.03 RP
Jun 17, 2026 18:33Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 15, 2026 23:16Victor MerckléVictor MerckléZIG0.16.0Success3,279
Jun 15, 2026 23:11Victor MerckléVictor MerckléZIG0.16.0Success3,253
Jun 15, 2026 23:06Victor MerckléVictor MerckléZIG0.16.0Success3,232
Jun 15, 2026 23:01Victor MerckléVictor MerckléZIG0.16.0Success5,241
Jun 15, 2026 22:56Victor MerckléVictor MerckléZIG0.16.0Success3,224+53.89 RP
Jun 15, 2026 22:51Victor MerckléVictor MerckléZIG0.16.0Error
Jun 15, 2026 22:46Victor MerckléVictor MerckléZIG0.16.0Success37,068
Jun 15, 2026 22:41Victor MerckléVictor MerckléZIG0.16.0Success3,341
Jun 15, 2026 22:32Victor MerckléVictor MerckléZIG0.16.0Success3,381
Jun 15, 2026 11:25Praveen KumarPraveen KumarGOgo1.26.2Success1,291,439+7.74 RP
Jun 13, 2026 18:26Victor MerckléVictor MerckléGOgo1.26.2Success35,943
Jun 13, 2026 18:08Victor MerckléVictor MerckléGOgo1.26.2Success34,010
Jun 13, 2026 18:02Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 13, 2026 17:45Victor MerckléVictor MerckléCSHARP10.0.7Success33,862
Jun 13, 2026 17:40Victor MerckléVictor MerckléCSHARP10.0.7Success33,543
Jun 13, 2026 17:24Victor MerckléVictor MerckléCSHARP10.0.7Success33,753
Jun 13, 2026 01:04Victor MerckléVictor MerckléCSHARP10.0.7Success36,567
Jun 13, 2026 00:47Victor MerckléVictor MerckléCSHARP10.0.7Success36,639
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.7Success5,139+582.76 RP
Jun 12, 2026 23:11Victor MerckléVictor MerckléGOgo1.26.2Success4,632
Jun 12, 2026 23:06Victor MerckléVictor MerckléGOgo1.26.2Error
Jun 12, 2026 22:51Victor MerckléVictor MerckléGOgo1.26.2Success4,679
Jun 12, 2026 22:46Victor MerckléVictor MerckléGOgo1.26.2Success4,575+920.77 RP
Jun 12, 2026 20:35Victor MerckléVictor MerckléRUSTrust-1.95.0Success3,227
Jun 12, 2026 20:03Victor MerckléVictor MerckléRUSTrust-1.95.0Success38,493
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.0Success3,298
Jun 12, 2026 13:01Victor MerckléVictor MerckléCPPg++14.2.0Success37,086
Jun 12, 2026 12:56Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 12, 2026 12:48Victor MerckléVictor MerckléCPPg++14.2.0Success3,336
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.0Success3,287
Jun 12, 2026 12:21Victor MerckléVictor MerckléCPPg++14.2.0Success3,358
Jun 12, 2026 12:16Victor MerckléVictor MerckléCPPg++14.2.0Success38,237+5.00 RP
Jun 11, 2026 14:09Victor MerckléVictor MerckléZIG0.16.0Success37,587
Jun 11, 2026 13:51Victor MerckléVictor MerckléZIG0.16.0Success3,281+153.50 RP
Jun 11, 2026 13:25Victor MerckléVictor MerckléZIG0.16.0Success3,455+928.56 RP
Jun 11, 2026 08:29Zhou180Zhou180RUSTrust-1.95.0Success35,058+11.90 RP
Jun 11, 2026 08:26Victor MerckléVictor MerckléZIG0.16.0Success10,468
Jun 11, 2026 08:22Weitao WanWeitao WanCPPg++14.2.0Success48,808+10.69 RP
Jun 11, 2026 08:17Weitao WanWeitao WanCPPclang++20.1.2Success51,496+19.97 RP
Jun 11, 2026 07:35Zhou180Zhou180RUSTrust-1.95.0Success36,584+18.28 RP
Jun 11, 2026 07:29Weitao WanWeitao WanCPPg++14.2.0Success57,400+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.0Success3,465
Jun 10, 2026 21:44Victor MerckléVictor MerckléCPPg++14.2.0Success5,655
Jun 10, 2026 21:39Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:34Victor MerckléVictor MerckléCPPg++14.2.0Success3,325
Jun 10, 2026 21:29Victor MerckléVictor MerckléCPPg++14.2.0Success3,415
Jun 10, 2026 21:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 10, 2026 21:12Victor MerckléVictor MerckléCPPg++14.2.0Success3,393
Jun 10, 2026 21:02Victor MerckléVictor MerckléCPPg++14.2.0Success3,615
Jun 10, 2026 20:55Victor MerckléVictor MerckléCPPg++14.2.0Success3,422
Jun 10, 2026 20:50Victor MerckléVictor MerckléCPPg++14.2.0Success4,900
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.0Success3,168
Jun 8, 2026 17:33Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 8, 2026 17:28Victor MerckléVictor MerckléCPPg++14.2.0Success3,337
Jun 8, 2026 17:23Victor MerckléVictor MerckléCPPg++14.2.0Success3,155+16.04 RP
Jun 8, 2026 17:13Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 8, 2026 16:50Victor MerckléVictor MerckléCPPg++14.2.0Success3,463
Jun 7, 2026 16:53Victor MerckléVictor MerckléCPPg++14.2.0Success3,306
Jun 7, 2026 16:46Victor MerckléVictor MerckléCPPg++14.2.0Success3,270
Jun 7, 2026 16:41Victor MerckléVictor MerckléCPPg++14.2.0Success38,634
Jun 7, 2026 16:36Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 7, 2026 16:31Victor MerckléVictor MerckléCPPg++14.2.0Success3,234
Jun 7, 2026 16:26Victor MerckléVictor MerckléCPPg++14.2.0Success3,163+178.72 RP
Jun 6, 2026 02:43Victor MerckléVictor MerckléCPPg++14.2.0Success3,408
Jun 6, 2026 02:38Victor MerckléVictor MerckléCPPg++14.2.0Success3,467
Jun 6, 2026 02:33Victor MerckléVictor MerckléCPPg++14.2.0Success40,201
Jun 6, 2026 02:28Victor MerckléVictor MerckléCPPg++14.2.0Success3,381
Jun 6, 2026 02:23Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 6, 2026 02:18Victor MerckléVictor MerckléCPPg++14.2.0Success3,329
Jun 6, 2026 02:13Victor MerckléVictor MerckléCPPg++14.2.0Success3,282
Jun 6, 2026 02:08Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 6, 2026 02:03Victor MerckléVictor MerckléCPPg++14.2.0Success3,255+375.72 RP
Jun 6, 2026 01:58Victor MerckléVictor MerckléCPPg++14.2.0Success3,729
Jun 6, 2026 01:53Victor MerckléVictor MerckléCPPg++14.2.0Success3,467+63.18 RP
Jun 6, 2026 01:48Victor MerckléVictor MerckléCPPg++14.2.0Success36,906
Jun 6, 2026 01:43Victor MerckléVictor MerckléCPPg++14.2.0Success3,789
Jun 6, 2026 01:38Victor MerckléVictor MerckléCPPg++14.2.0Success3,641
Jun 5, 2026 06:18Victor MerckléVictor MerckléCPPg++14.2.0Success38,481
Jun 5, 2026 06:09Victor MerckléVictor MerckléCPPg++14.2.0Success3,525+1.61 RP