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
Jan 19, 2025 02:38Code HintsCode HintsRUSTrust-1.84.0Success338,114+7.56 RP
Jan 19, 2025 02:31Code HintsCode HintsRUSTrust-1.84.0Success454,167+16.41 RP
Jan 19, 2025 02:23Code HintsCode HintsRUSTrust-1.84.0Success2,670,305
Jan 19, 2025 02:16Code HintsCode HintsRUSTrust-1.84.0Success2,498,498
Jan 19, 2025 02:13Code HintsCode HintsRUSTrust-1.84.0Success8,829,584
Jan 19, 2025 02:08Code HintsCode HintsRUSTrust-1.84.0Success15,534,016
Jan 19, 2025 02:08Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 02:05Code HintsCode HintsRUSTrust-1.84.0Success1,897,466
Jan 19, 2025 02:03Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 01:54Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 01:32Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 01:21Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 01:02Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 00:59Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 00:57Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 00:55Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 00:52Code HintsCode HintsRUSTrust-1.84.0Error
Jan 19, 2025 00:39Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:54Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:50Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:44Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:42Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:41Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:38Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:37Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:36Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:36Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:34Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:31Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 23:18Code HintsCode HintsRUSTrust-1.84.0Error
Jan 18, 2025 21:59alxmrcktralxmrcktrRUSTrust-1.84.0Success2,298,803
Jan 18, 2025 21:58alxmrcktralxmrcktrRUSTrust-1.84.0Success2,348,617
Jan 18, 2025 21:56alxmrcktralxmrcktrRUSTrust-1.84.0Success2,350,157
Jan 18, 2025 21:54alxmrcktralxmrcktrRUSTrust-1.84.0Success3,103,367
Jan 18, 2025 21:52alxmrcktralxmrcktrRUSTrust-1.84.0Success2,429,100
Jan 18, 2025 21:44alxmrcktralxmrcktrRUSTrust-1.84.0Success2,782,105
Jan 18, 2025 21:42alxmrcktralxmrcktrRUSTrust-1.84.0Success2,366,826
Jan 18, 2025 21:39alxmrcktralxmrcktrRUSTrust-1.84.0Success2,575,757
Jan 18, 2025 21:38alxmrcktralxmrcktrRUSTrust-1.84.0Success3,089,438
Jan 18, 2025 21:36alxmrcktralxmrcktrRUSTrust-1.84.0Success2,809,081
Jan 18, 2025 21:35alxmrcktralxmrcktrRUSTrust-1.84.0Success2,850,012
Jan 18, 2025 21:35alxmrcktralxmrcktrRUSTrust-1.84.0Success2,849,812
Jan 18, 2025 21:33alxmrcktralxmrcktrRUSTrust-1.84.0Success2,945,931
Jan 18, 2025 20:26alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 18, 2025 20:24Code HintsCode HintsRUSTrust-1.84.0Success1,896,779
Jan 18, 2025 19:00alxmrcktralxmrcktrRUSTrust-1.84.0Success708,019
Jan 18, 2025 18:47alxmrcktralxmrcktrRUSTrust-1.84.0Success9,651,193
Jan 18, 2025 18:41alxmrcktralxmrcktrRUSTrust-1.84.0Success12,439,490
Jan 18, 2025 16:39alxmrcktralxmrcktrRUSTrust-1.84.0Success5,246,567
Jan 18, 2025 16:38alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 18, 2025 16:37alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 18, 2025 15:32AnSaAnSaCPPg++13.2.0Error
Jan 18, 2025 15:15alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 18, 2025 12:47AnSaAnSaCPPg++13.2.0Success2,397,272
Jan 18, 2025 11:46AnSaAnSaCPPg++13.2.0Success2,369,198
Jan 18, 2025 06:49Ian MckibbenIan MckibbenCPPg++13.2.0Success11,186,819
Jan 18, 2025 06:37Ian MckibbenIan MckibbenCPPg++13.2.0Success3,494,617
Jan 18, 2025 06:36Ian MckibbenIan MckibbenCPPclang++18.1.3Success4,370,409
Jan 18, 2025 06:35Ian MckibbenIan MckibbenCPPclang++18.1.3Success3,390,148
Jan 18, 2025 06:35Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 18, 2025 06:29Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 18, 2025 06:22Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 18, 2025 06:19Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 18, 2025 06:18Ian MckibbenIan MckibbenCPPclang++18.1.3Error
Jan 18, 2025 05:55Ian MckibbenIan MckibbenCPPg++13.2.0Success2,374,117
Jan 18, 2025 05:26Ian MckibbenIan MckibbenCPPg++13.2.0Success2,329,147
Jan 18, 2025 05:25Ian MckibbenIan MckibbenCPPclang++18.1.3Success2,441,117
Jan 18, 2025 05:24Ian MckibbenIan MckibbenCPPclang++18.1.3Success2,326,919+4.30 RP
Jan 18, 2025 00:51Code HintsCode HintsRUSTrust-1.84.0Success1,893,678
Jan 17, 2025 23:39Code HintsCode HintsRUSTrust-1.84.0Error
Jan 17, 2025 23:21alxmrcktralxmrcktrRUSTrust-1.84.0Success997,578
Jan 17, 2025 23:21alxmrcktralxmrcktrRUSTrust-1.84.0Success809,045
Jan 17, 2025 23:21alxmrcktralxmrcktrRUSTrust-1.84.0Success802,491
Jan 17, 2025 23:20alxmrcktralxmrcktrRUSTrust-1.84.0Success712,540
Jan 17, 2025 23:17alxmrcktralxmrcktrRUSTrust-1.84.0Success708,564
Jan 17, 2025 23:16alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 17, 2025 23:10alxmrcktralxmrcktrRUSTrust-1.84.0Success709,986
Jan 17, 2025 23:09alxmrcktralxmrcktrRUSTrust-1.84.0Success707,384+0.07 RP
Jan 17, 2025 23:07alxmrcktralxmrcktrRUSTrust-1.84.0Success712,172
Jan 17, 2025 22:53alxmrcktralxmrcktrRUSTrust-1.84.0Success756,922
Jan 17, 2025 22:46alxmrcktralxmrcktrRUSTrust-1.84.0Success713,700
Jan 17, 2025 22:40alxmrcktralxmrcktrRUSTrust-1.84.0Success715,631
Jan 17, 2025 22:34alxmrcktralxmrcktrRUSTrust-1.84.0Success710,909+1.52 RP
Jan 17, 2025 22:29alxmrcktralxmrcktrRUSTrust-1.84.0Success797,081+12.55 RP
Jan 17, 2025 21:14Code HintsCode HintsRUSTrust-1.84.0Success1,887,233
Jan 17, 2025 19:44Code HintsCode HintsRUSTrust-1.84.0Success1,782,821+0.01 RP
Jan 17, 2025 19:39Code HintsCode HintsRUSTrust-1.84.0Success1,814,014
Jan 17, 2025 18:58alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 17, 2025 18:48Code HintsCode HintsRUSTrust-1.84.0Success1,785,191+0.15 RP
Jan 17, 2025 18:47alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 17, 2025 18:33Code HintsCode HintsRUSTrust-1.84.0Success1,835,362+0.52 RP
Jan 17, 2025 18:31alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 17, 2025 18:28alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 16, 2025 14:18alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 16, 2025 12:02alxmrcktralxmrcktrRUSTrust-1.84.0Error
Jan 16, 2025 08:07NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 08:05NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 08:03NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 08:01NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 07:47NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error