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 15, 2026 23:18Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 23:17Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 22:38Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 22:21Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 22:05Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 21:00Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 20:59Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 20:59Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+10.51 RP
Jul 15, 2026 20:58Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error
Jul 15, 2026 20:57Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+24.18 RP
Jul 15, 2026 19:27Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+5.58 RP
Jul 15, 2026 18:47Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+18.14 RP
Jul 15, 2026 18:02Andrew TsibinAndrew TsibinRUSTrust-1.95.0Success44,329
Jul 15, 2026 17:02Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+10.40 RP
Jul 15, 2026 10:52Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+28.24 RP
Jul 15, 2026 09:58Andrew TsibinAndrew TsibinRUSTrust-1.95.0Error+197.08 RP
Jul 14, 2026 22:39Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 14, 2026 22:34Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 14, 2026 22:29Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 14, 2026 22:24Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 14, 2026 22:19Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 10, 2026 18:28Genos0Genos0CPPg++10.5.0Success1,283,306+7.79 RP
Jul 9, 2026 14:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:48Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:32Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:26Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:21Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:11Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 14:06Victor MerckléVictor MerckléCPPg++14.2.0Error+64.63 RP
Jul 9, 2026 13:58Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 13:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 13:40Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 13:35Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 13:27Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 13:22Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 9, 2026 13:16Victor MerckléVictor MerckléCPPg++14.2.0Error+75.32 RP
Jul 9, 2026 13:11Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 6, 2026 14:58Josu San MartinJosu San MartinCPPg++14.2.0Success45,832
Jul 6, 2026 09:00Josu San MartinJosu San MartinCPPg++14.2.0Success334,534
Jul 6, 2026 08:06Josu San MartinJosu San MartinCPPg++13.3.0Error
Jul 6, 2026 08:04Josu San MartinJosu San MartinCPPg++14.2.0Error
Jul 6, 2026 07:54Josu San MartinJosu San MartinCPPg++14.2.0Error
Jul 6, 2026 04:27Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Error+3.52 RP
Jul 6, 2026 02:36Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Error+20.37 RP
Jul 5, 2026 23:10Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success51,744
Jul 5, 2026 22:36Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success51,550
Jul 5, 2026 18:04Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:59Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:54Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:49Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:44Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:23Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 17:18Victor MerckléVictor MerckléCPPg++14.2.0Error
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.0Error
Jul 5, 2026 16:56Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 5, 2026 16:51Victor MerckléVictor MerckléCPPg++14.2.0Error
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.0Error+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.0Error+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.0Error+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.0Error+29.25 RP
Jul 3, 2026 16:23Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Success130,031
Jul 3, 2026 16:15Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Error+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.0Error+58.86 RP
Jul 3, 2026 15:16Dennis FleurbaaijDennis FleurbaaijCPPg++10.5.0Success477,053
Jul 3, 2026 15:05Dennis FleurbaaijDennis FleurbaaijCPPg++14.2.0Error+22.46 RP
Jul 3, 2026 14:43Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 14:37Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 14:32Victor MerckléVictor MerckléCPPg++14.2.0Success88,105
Jul 3, 2026 14:27Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 14:16Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 07:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 07:48Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 07:38Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 3, 2026 02:43f0xerif0xeriCPPg++10.5.0Success1,287,487+7.77 RP
Jul 2, 2026 21:31Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 2, 2026 21:18Victor MerckléVictor MerckléCPPg++14.2.0Error
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.0Error
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.0Error
Jul 2, 2026 15:53A_ShamanA_ShamanCPPg++10.5.0Success188,165
Jul 2, 2026 15:53Victor MerckléVictor MerckléCPPg++14.2.0Error
Jul 2, 2026 15:49A_ShamanA_ShamanCPPg++10.5.0Success180,374+0.35 RP