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 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
Dec 20, 2024 17:12Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 17:11Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 17:07Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 17:07Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success37,328
Dec 20, 2024 17:06Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success44,190
Dec 20, 2024 17:06Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success37,759
Dec 20, 2024 16:59Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 16:46Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 16:38Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 16:37Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 16:36Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Dec 20, 2024 16:11Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success48,679
Dec 20, 2024 16:10Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success46,414
Dec 20, 2024 15:56Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Error
Dec 20, 2024 15:53Yuriy LyfenkoYuriy LyfenkoCPPclang++18.1.3Success46,386
Dec 20, 2024 15:53Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success49,186
Dec 20, 2024 08:12Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 20, 2024 08:11Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Success38,666
Dec 20, 2024 05:44Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 19, 2024 16:47yenw0dyenw0dGOgo1.22.10Error
Dec 19, 2024 16:46yenw0dyenw0dGOgo1.22.10Success1,373,157
Dec 19, 2024 16:45yenw0dyenw0dGOgo1.22.10Error
Dec 19, 2024 16:45yenw0dyenw0dGOgo1.22.10Error
Dec 19, 2024 16:43yenw0dyenw0dGOgo1.22.10Error
Dec 19, 2024 11:02NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 19, 2024 10:57NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success4,178,472
Dec 19, 2024 03:57yenw0dyenw0dGOgo1.22.10Success132,228+1.38 RP