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 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
Jan 16, 2025 07:45NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 07:44NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 07:39NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 16, 2025 02:19Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 02:14Code HintsCode HintsRUSTrust-1.78.0Success27,252,716
Jan 16, 2025 02:11Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 02:10Code HintsCode HintsRUSTrust-1.78.0Success3,579,984
Jan 16, 2025 02:00Code HintsCode HintsRUSTrust-1.78.0Success2,029,807+4.93 RP
Jan 16, 2025 01:54Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:34Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:33Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:26Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:25Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:22Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:18Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:16Code HintsCode HintsRUSTrust-1.78.0Error
Jan 16, 2025 01:07Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 22:10Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 21:25Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 17:54Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 17:46Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 17:44Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 17:43Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 17:32Code HintsCode HintsRUSTrust-1.78.0Error
Jan 15, 2025 11:37NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 15, 2025 08:55NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error
Jan 15, 2025 08:52NoSIMD_C#NoSIMD_C#CSHARP9.0.1Error