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 19, 2024 03:53yenw0dyenw0dGOgo1.22.10Error
Dec 19, 2024 03:50yenw0dyenw0dGOgo1.23.4Error
Dec 19, 2024 03:49yenw0dyenw0dGOgo1.21.7Success16,157,622
Dec 19, 2024 03:47yenw0dyenw0dGOgo1.21.7Success134,678+6.11 RP
Dec 19, 2024 03:44yenw0dyenw0dGOgo1.21.7Error
Dec 19, 2024 03:33yenw0dyenw0dGOgo1.21.7Success154,053
Dec 19, 2024 03:27yenw0dyenw0dGOgo1.21.7Error
Dec 18, 2024 17:15yenw0dyenw0dGOgo1.21.7Success275,188
Dec 17, 2024 12:53ffCPPclang++18.1.3Success2,367,060+4.22 RP
Dec 14, 2024 20:01Yuriy LyfenkoYuriy LyfenkoCSHARP9.0.0Error
Dec 14, 2024 19:55Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.11Success72,166
Dec 14, 2024 19:53Yuriy LyfenkoYuriy LyfenkoCSHARP9.0.0Success61,917
Dec 14, 2024 19:51Yuriy LyfenkoYuriy LyfenkoCSHARP9.0.0Error
Dec 13, 2024 08:01NoSIMD_C#NoSIMD_C#CSHARP9.0.0Success4,189,667
Dec 12, 2024 18:45Yuriy LyfenkoYuriy LyfenkoCPPg++13.2.0Error
Dec 10, 2024 10:51NoSIMD_C#NoSIMD_C#CSHARP9.0.0Error
Dec 10, 2024 09:50NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Success4,190,447
Dec 8, 2024 06:34E SequeiraE SequeiraCPPclang++18.1.3Error
Dec 8, 2024 06:34E SequeiraE SequeiraCPPg++13.2.0Success95,855
Dec 8, 2024 06:30E SequeiraE SequeiraCPPg++13.2.0Success101,905
Dec 8, 2024 06:30E SequeiraE SequeiraCPPg++13.2.0Success95,045
Dec 8, 2024 06:30E SequeiraE SequeiraCPPclang++18.1.3Error
Dec 7, 2024 18:41NoSIMD_C#NoSIMD_C#CPPg++13.2.0Error
Dec 6, 2024 10:16NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Success4,210,124
Dec 6, 2024 09:53E SequeiraE SequeiraGOgo1.23.3Success143,541
Dec 6, 2024 09:52E SequeiraE SequeiraGOgo1.23.3Success149,441
Dec 6, 2024 09:51E SequeiraE SequeiraGOgo1.23.3Success149,036
Dec 6, 2024 09:49E SequeiraE SequeiraGOgo1.23.3Error
Dec 6, 2024 09:45E SequeiraE SequeiraGOgo1.23.3Success148,948
Dec 6, 2024 09:31E SequeiraE SequeiraGOgo1.23.3Error
Dec 4, 2024 12:19NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Success4,196,283
Dec 2, 2024 08:57E SequeiraE SequeiraGOgo1.23.3Success134,767
Dec 2, 2024 08:56E SequeiraE SequeiraGOgo1.23.3Error
Dec 2, 2024 08:53E SequeiraE SequeiraGOgo1.23.3Error
Nov 29, 2024 11:41E SequeiraE SequeiraGOgo1.23.3Success37,207,812
Nov 29, 2024 11:26E SequeiraE SequeiraGOgo1.23.3Success37,881,697
Nov 27, 2024 23:49Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 20:46Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 20:08Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 20:07Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 20:03Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 20:01Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:57Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:53Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:53Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:37Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:24Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:23Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:20Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:09Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:08Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:08Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:07Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 19:04Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:55Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:54Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:53Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:44Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:41Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:40Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:40Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:35Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:33Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:33Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:32Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:32Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:31Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:30Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:29Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:28Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:28Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:27Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:26Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:25Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:24Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:24Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:21Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:14Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:13Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:12Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:12Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:09Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:09Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:08Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 18:07Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 17:30Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 17:30Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 27, 2024 17:29Joad NacerJoad NacerCPPclang++18.1.3Error
Nov 25, 2024 11:23E SequeiraE SequeiraCPPclang++18.1.3Success74,043
Nov 25, 2024 10:24E SequeiraE SequeiraCPPclang++18.1.3Success74,028
Nov 25, 2024 10:19E SequeiraE SequeiraGOgo1.23.3Success138,357
Nov 25, 2024 10:17E SequeiraE SequeiraGOgo1.23.3Error
Nov 25, 2024 10:07E SequeiraE SequeiraGOgo1.23.3Success139,628
Nov 25, 2024 09:53E SequeiraE SequeiraGOgo1.23.3Success131,267
Nov 25, 2024 09:52E SequeiraE SequeiraGOgo1.23.3Success130,900
Nov 25, 2024 09:51E SequeiraE SequeiraGOgo1.23.3Success126,241
Nov 25, 2024 09:50E SequeiraE SequeiraGOgo1.23.3Success126,234
Nov 25, 2024 09:50E SequeiraE SequeiraGOgo1.23.3Success128,224
Nov 25, 2024 09:47E SequeiraE SequeiraGOgo1.23.3Success128,609
Nov 25, 2024 07:57NoSIMD_C#NoSIMD_C#CSHARP9.0.0-rc.2Error