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 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
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