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
Jul 5, 2026 17:23Victor MerckléVictor MerckléCPPg++14.2.0Success5,341
Jul 5, 2026 17:18Victor MerckléVictor MerckléCPPg++14.2.0Success3,770
Jul 5, 2026 17:13Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:08Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:01Victor MerckléVictor MerckléCPPg++14.2.0Success7,246
Jul 5, 2026 16:56Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 16:51Victor MerckléVictor MerckléCPPg++14.2.0Success3,600
Jul 5, 2026 16:44Victor MerckléVictor MerckléCPPg++14.2.0Success224,225
Jul 5, 2026 04:17Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success51,336
Jul 5, 2026 03:53Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success47,951+1.53 RP
Jul 5, 2026 03:36Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success48,306+12.77 RP
Jul 5, 2026 02:57Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success52,363
Jul 5, 2026 02:29Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success51,481+1.54 RP
Jul 5, 2026 02:24Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success53,674
Jul 5, 2026 02:14Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success54,160
Jul 5, 2026 01:50Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success53,424
Jul 4, 2026 16:23Dennis FleurbaaijDennis FleurbaaijCPPg++10.5.0Success51,893+20.55 RP
Jul 4, 2026 06:04Dennis FleurbaaijDennis FleurbaaijCPPg++10.5.0Success58,087+0.87 RP
Jul 4, 2026 05:42Dennis FleurbaaijDennis FleurbaaijCPPg++10.5.0Success58,381+4.93 RP
Jul 4, 2026 01:12Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success60,112+36.79 RP
Jul 3, 2026 18:41Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success77,182+6.27 RP
Jul 3, 2026 16:49Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success81,108+29.25 RP
Jul 3, 2026 16:23Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success130,031
Jul 3, 2026 16:15Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success106,331+12.72 RP
Jul 3, 2026 15:47Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success186,306
Jul 3, 2026 15:43Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success125,827
Jul 3, 2026 15:34Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success122,965+58.86 RP
Jul 3, 2026 15:16Dennis FleurbaaijDennis FleurbaaijCPPg++10.5.0Success477,053
Jul 3, 2026 15:05Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success445,196+22.46 RP
Jul 3, 2026 14:43Victor MerckléVictor MerckléCPPg++14.2.0Success3,955
Jul 3, 2026 14:37Victor MerckléVictor MerckléCPPg++14.2.0Success3,705
Jul 3, 2026 14:32Victor MerckléVictor MerckléCPPg++14.2.0Success88,105
Jul 3, 2026 14:27Victor MerckléVictor MerckléCPPg++14.2.0Success41,091
Jul 3, 2026 14:16Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 07:53Victor MerckléVictor MerckléCPPg++14.2.0Success3,344
Jul 3, 2026 07:48Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 07:38Victor MerckléVictor MerckléCPPg++14.2.0Success3,232
Jul 3, 2026 02:43f0xerif0xeriCPPg++10.5.0Success1,287,487+7.77 RP
Jul 2, 2026 21:31Victor MerckléVictor MerckléCPPg++14.2.0Success3,563
Jul 2, 2026 21:18Victor MerckléVictor MerckléCPPg++14.2.0Success3,277
Jul 2, 2026 16:06A_ShamanA_ShamanCPPg++10.5.0Success171,941+2.63 RP
Jul 2, 2026 16:03Victor MerckléVictor MerckléCPPg++14.2.0Success3,406
Jul 2, 2026 16:00A_ShamanA_ShamanCPPg++10.5.0Success180,100+0.08 RP
Jul 2, 2026 15:58Victor MerckléVictor MerckléCPPg++14.2.0Success3,541
Jul 2, 2026 15:53A_ShamanA_ShamanCPPg++10.5.0Success188,165
Jul 2, 2026 15:53Victor MerckléVictor MerckléCPPg++14.2.0Success3,303
Jul 2, 2026 15:49A_ShamanA_ShamanCPPg++10.5.0Success180,374+0.35 RP
Jul 2, 2026 15:48Victor MerckléVictor MerckléCPPg++14.2.0Success37,906
Jul 2, 2026 15:42A_ShamanA_ShamanCPPg++10.5.0Success181,534+12.65 RP
Jul 2, 2026 15:42Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 2, 2026 15:36Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 2, 2026 15:35A_ShamanA_ShamanCPPg++10.5.0Success235,641+0.65 RP
Jul 2, 2026 15:32A_ShamanA_ShamanCPPg++10.5.0Success239,284+0.11 RP
Jul 2, 2026 15:31Victor MerckléVictor MerckléCPPg++14.2.0Success49,703
Jul 2, 2026 15:29A_ShamanA_ShamanCPPg++10.5.0Success239,898+0.68 RP
Jul 2, 2026 15:25A_ShamanA_ShamanCPPg++10.5.0Success243,863+0.98 RP
Jul 2, 2026 15:18A_ShamanA_ShamanCPPg++10.5.0Success249,831+2.08 RP
Jul 1, 2026 11:20Victor MerckléVictor MerckléCPPg++14.2.0Success40,410
Jul 1, 2026 11:14Victor MerckléVictor MerckléCPPg++14.2.0Success42,322
Jun 29, 2026 23:52Victor MerckléVictor MerckléCPPg++14.2.0Success50,044
Jun 29, 2026 23:46Victor MerckléVictor MerckléCPPg++14.2.0Success3,360
Jun 29, 2026 23:39Victor MerckléVictor MerckléCPPg++14.2.0Success3,262
Jun 29, 2026 23:34Victor MerckléVictor MerckléCPPg++14.2.0Success3,353
Jun 29, 2026 14:37Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 29, 2026 14:09Victor MerckléVictor MerckléCPPg++14.2.0Success4,355
Jun 29, 2026 00:48Victor MerckléVictor MerckléCPPg++14.2.0Success560,113
Jun 29, 2026 00:40Victor MerckléVictor MerckléCPPg++14.2.0Success3,175
Jun 29, 2026 00:38Victor MerckléVictor MerckléCPPg++14.2.0Success39,320+5.00 RP
Jun 29, 2026 00:30Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 28, 2026 15:00Victor MerckléVictor MerckléCPPg++14.2.0Success3,391
Jun 28, 2026 14:55Victor MerckléVictor MerckléCPPg++14.2.0Success37,231
Jun 28, 2026 14:50Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 24, 2026 22:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Jun 24, 2026 22:14Victor MerckléVictor MerckléCPPg++14.2.0Success3,160
Jun 24, 2026 22:09Victor MerckléVictor MerckléCPPg++14.2.0Success3,322
Jun 24, 2026 22:04Victor MerckléVictor MerckléCPPg++14.2.0Success38,546
Jun 24, 2026 21:59Victor MerckléVictor MerckléCPPg++14.2.0Success3,394
Jun 24, 2026 21:54Victor MerckléVictor MerckléCPPg++14.2.0Success3,577
Jun 24, 2026 21:48Victor MerckléVictor MerckléCPPg++14.2.0Success3,606
Jun 22, 2026 18:53Code HintsCode HintsGOgo1.26.4Error
Jun 22, 2026 18:50Code HintsCode HintsGOgo1.26.4Error
Jun 22, 2026 18:47Code HintsCode HintsGOgo1.26.4Error
Jun 22, 2026 17:32Code HintsCode HintsGOgo1.26.2Error
Jun 22, 2026 17:11Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 16:45Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 16:33Code HintsCode HintsCPPg++14.2.0Error+160.41 RP
Jun 22, 2026 15:22Code HintsCode HintsCPPg++14.2.0Error
Jun 22, 2026 15:19Code HintsCode HintsCPPg++13.3.0Error
Jun 22, 2026 15:15Code HintsCode HintsCPPclang++20.1.2Error
Jun 22, 2026 15:11Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 15:06Code HintsCode HintsCPPg++14.2.0Error
Jun 22, 2026 15:00Code HintsCode HintsRUSTrust-1.96.0Error+58.40 RP
Jun 22, 2026 14:58Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 14:44Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 14:40Code HintsCode HintsRUSTrust-1.96.0Error+72.34 RP
Jun 22, 2026 14:37Code HintsCode HintsRUSTrust-1.96.0Error+222.37 RP
Jun 22, 2026 14:33Code HintsCode HintsRUSTrust-1.96.0Error+321.92 RP
Jun 22, 2026 14:31Code HintsCode HintsRUSTrust-1.96.0Error
Jun 22, 2026 14:23Code HintsCode HintsRUSTrust-1.96.0Error+99.42 RP
Jun 22, 2026 14:19Code HintsCode HintsRUSTrust-1.96.0Error+79.67 RP