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
Dec 27, 2024 17:54Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 17:14Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 16:39Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 16:38Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 16:36Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 16:31Louis PonetLouis PonetRUSTrust-1.83.0Success273,216+0.08 RP
Dec 27, 2024 16:29Louis PonetLouis PonetRUSTrust-1.83.0Success273,824+1.02 RP
Dec 27, 2024 16:21Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:36Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:35Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:32Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:31Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:29Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:19Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:18Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:18Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 14:07Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 11:13Louis PonetLouis PonetRUSTrust-1.83.0Success281,690+0.01 RP
Dec 27, 2024 11:13Louis PonetLouis PonetRUSTrust-1.83.0Success282,419
Dec 27, 2024 11:12Louis PonetLouis PonetRUSTrust-1.83.0Success282,012
Dec 27, 2024 11:08Louis PonetLouis PonetRUSTrust-1.83.0Success281,871
Dec 27, 2024 11:07Louis PonetLouis PonetRUSTrust-1.83.0Success281,731+0.61 RP
Dec 27, 2024 10:51Louis PonetLouis PonetRUSTrust-1.83.0Success286,648+0.38 RP
Dec 27, 2024 10:38Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 10:34Louis PonetLouis PonetRUSTrust-1.83.0Success302,876
Dec 27, 2024 10:33Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 10:25Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 27, 2024 10:13Louis PonetLouis PonetRUSTrust-1.83.0Success289,779+10.02 RP
Dec 27, 2024 10:06Louis PonetLouis PonetRUSTrust-1.83.0Success408,369+0.16 RP
Dec 27, 2024 03:28Joad NacerJoad NacerCPPclang++18.1.3Error
Dec 27, 2024 03:15Joad NacerJoad NacerCPPclang++18.1.3Error
Dec 27, 2024 03:02Joad NacerJoad NacerCPPclang++18.1.3Error
Dec 27, 2024 03:02Joad NacerJoad NacerCPPclang++18.1.3Success31,159+40.50 RP
Dec 27, 2024 02:50Joad NacerJoad NacerCPPclang++18.1.3Error
Dec 27, 2024 02:49Joad NacerJoad NacerCPPclang++18.1.3Error
Dec 27, 2024 02:48Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:46Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:39Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:27Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:27Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:25Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:24Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:24Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:14Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:13Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:12Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:12Joad NacerJoad NacerCPPg++13.2.0Error
Dec 27, 2024 02:09Joad NacerJoad NacerCPPg++13.2.0Error
Dec 26, 2024 23:14Louis PonetLouis PonetRUSTrust-1.83.0Success411,136+4.54 RP
Dec 26, 2024 16:51Louis PonetLouis PonetRUSTrust-1.83.0Success506,910
Dec 26, 2024 16:41Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 16:28Louis PonetLouis PonetRUSTrust-1.83.0Success537,445
Dec 26, 2024 16:22Louis PonetLouis PonetRUSTrust-1.83.0Success566,360
Dec 26, 2024 14:59Louis PonetLouis PonetRUSTrust-1.83.0Success1,908,986
Dec 26, 2024 14:52Louis PonetLouis PonetRUSTrust-1.83.0Success1,884,610
Dec 26, 2024 14:50Louis PonetLouis PonetRUSTrust-1.83.0Success505,545+0.51 RP
Dec 26, 2024 14:06Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 14:03Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:51Louis PonetLouis PonetRUSTrust-1.83.0Success519,040+0.02 RP
Dec 26, 2024 13:51Louis PonetLouis PonetRUSTrust-1.83.0Success519,588+5.34 RP
Dec 26, 2024 13:47Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:41Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:38Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:37Louis PonetLouis PonetRUSTrust-1.83.0Success1,757,017
Dec 26, 2024 13:36Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:35Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:32Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:32Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 13:27Louis PonetLouis PonetRUSTrust-1.83.0Success1,753,126
Dec 26, 2024 10:52Louis PonetLouis PonetRUSTrust-1.83.0Success719,147+7.34 RP
Dec 26, 2024 10:47Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 26, 2024 10:46Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 23:21Louis PonetLouis PonetRUSTrust-1.83.0Success1,523,543+6.56 RP
Dec 25, 2024 23:17Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 22:43Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 22:41Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 22:40Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 22:17Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 22:01Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 22:00Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 21:58Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 21:55Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 21:47Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 18:23Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 18:21Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 16:46Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 16:45Louis PonetLouis PonetRUSTrust-1.83.0Error
Dec 25, 2024 03:34Joad NacerJoad NacerCPPg++13.2.0Error
Dec 22, 2024 23:17HighloadGPTO1HighloadGPTO1CPPg++13.2.0Success429,838+0.58 RP
Dec 22, 2024 23:16HighloadGPTO1HighloadGPTO1CPPclang++18.1.3Success440,740+22.69 RP
Dec 20, 2024 19:16Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 19:05Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success54,348
Dec 20, 2024 19:02Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 18:54Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success40,031
Dec 20, 2024 18:46Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 18:39Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 18:39Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 18:38Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 18:36Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success45,786
Dec 20, 2024 18:35Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error