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
Mar 26, 2024 10:47E SequeiraE SequeiraCPPg++9.4.0Success1,609,774+0.01 RP
Mar 26, 2024 10:46E SequeiraE SequeiraCPPg++9.4.0Success1,612,745+0.03 RP
Mar 26, 2024 10:46E SequeiraE SequeiraCPPg++9.4.0Success2,609,246
Mar 26, 2024 10:40E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 10:37E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 10:29E SequeiraE SequeiraCPPg++9.4.0Success4,260,642
Mar 26, 2024 10:26E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 10:19E SequeiraE SequeiraCPPg++9.4.0Success1,626,620
Mar 26, 2024 10:17E SequeiraE SequeiraCPPg++9.4.0Success7,063,905
Mar 26, 2024 10:15E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 10:11E SequeiraE SequeiraCPPg++9.4.0Success1,619,601+0.01 RP
Mar 26, 2024 10:08E SequeiraE SequeiraCPPg++9.4.0Success2,284,143
Mar 26, 2024 10:08E SequeiraE SequeiraCPPg++9.4.0Success2,591,623
Mar 26, 2024 10:06E SequeiraE SequeiraCPPg++9.4.0Success2,390,322
Mar 26, 2024 10:05E SequeiraE SequeiraCPPg++9.4.0Success2,234,742
Mar 26, 2024 10:05E SequeiraE SequeiraCPPg++9.4.0Success1,781,008
Mar 26, 2024 10:04E SequeiraE SequeiraCPPg++9.4.0Success1,811,237
Mar 26, 2024 10:04E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:48E SequeiraE SequeiraCPPg++9.4.0Success1,624,387
Mar 26, 2024 09:48E SequeiraE SequeiraCPPclang++10.0.0Success1,629,726
Mar 26, 2024 09:48E SequeiraE SequeiraCPPclang++10.0.0Success1,632,278
Mar 26, 2024 09:46E SequeiraE SequeiraCPPg++9.4.0Success5,453,802
Mar 26, 2024 09:44E SequeiraE SequeiraCPPg++9.4.0Success2,053,765
Mar 26, 2024 09:43E SequeiraE SequeiraCPPg++9.4.0Success2,085,838
Mar 26, 2024 09:40E SequeiraE SequeiraCPPg++9.4.0Success2,007,173
Mar 26, 2024 09:36E SequeiraE SequeiraCPPg++9.4.0Success1,622,904+0.58 RP
Mar 26, 2024 09:32E SequeiraE SequeiraCPPg++9.4.0Success2,307,615
Mar 26, 2024 09:27E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:27E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:14E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:14E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:10E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:08E SequeiraE SequeiraCPPg++9.4.0Success2,136,717
Mar 26, 2024 09:04E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:02E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 09:00E SequeiraE SequeiraCPPg++9.4.0Error
Mar 26, 2024 08:45E SequeiraE SequeiraCPPg++9.4.0Success1,793,395
Mar 26, 2024 08:33E SequeiraE SequeiraCPPg++9.4.0Success1,790,927+0.02 RP
Mar 25, 2024 17:15E SequeiraE SequeiraCPPg++9.4.0Error
Mar 25, 2024 16:54E SequeiraE SequeiraCPPg++9.4.0Success1,796,232+0.38 RP
Mar 25, 2024 16:53E SequeiraE SequeiraCPPg++9.4.0Success2,617,204
Mar 25, 2024 16:36E SequeiraE SequeiraCPPg++9.4.0Success1,928,348
Mar 25, 2024 16:27E SequeiraE SequeiraCPPg++9.4.0Success1,937,132
Mar 25, 2024 16:21E SequeiraE SequeiraCPPg++9.4.0Success2,097,069
Mar 25, 2024 16:20E SequeiraE SequeiraCPPg++9.4.0Success1,927,573
Mar 25, 2024 16:17E SequeiraE SequeiraCPPg++9.4.0Error
Mar 25, 2024 16:17E SequeiraE SequeiraCPPg++9.4.0Error
Mar 25, 2024 16:16E SequeiraE SequeiraCPPg++9.4.0Success1,929,039
Mar 25, 2024 16:16E SequeiraE SequeiraCPPg++9.4.0Success1,935,249
Mar 25, 2024 16:15E SequeiraE SequeiraCPPg++9.4.0Success1,971,805
Mar 25, 2024 16:10E SequeiraE SequeiraCPPg++9.4.0Success1,929,273+0.73 RP
Mar 25, 2024 16:09E SequeiraE SequeiraCPPg++9.4.0Success2,640,689
Mar 25, 2024 16:09E SequeiraE SequeiraCPPclang++10.0.0Success2,642,530
Mar 25, 2024 16:09E SequeiraE SequeiraCPPg++9.4.0Success2,613,582
Mar 25, 2024 16:04E SequeiraE SequeiraCPPg++9.4.0Success2,815,693
Mar 25, 2024 12:50E SequeiraE SequeiraCPPg++9.4.0Error
Mar 25, 2024 12:48E SequeiraE SequeiraCPPg++9.4.0Error
Mar 25, 2024 12:33E SequeiraE SequeiraCPPg++9.4.0Success2,650,100
Mar 25, 2024 12:32E SequeiraE SequeiraCPPg++9.4.0Success2,252,747
Mar 25, 2024 12:10E SequeiraE SequeiraCPPg++9.4.0Success2,246,905+4.45 RP
Mar 22, 2024 13:08Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success1,531,141
Mar 22, 2024 13:04Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success7,353,376
Mar 22, 2024 13:02Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success1,403,822
Mar 22, 2024 13:02Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success1,354,151
Mar 22, 2024 13:01Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Error
Mar 22, 2024 12:57Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success1,319,167+0.12 RP
Mar 22, 2024 12:56Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success1,339,798+2.27 RP
Mar 22, 2024 12:55Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Error
Mar 22, 2024 12:54Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Error
Mar 22, 2024 12:53Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Error
Mar 22, 2024 12:43Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success1,924,127+0.76 RP
Mar 22, 2024 12:42Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Error
Mar 22, 2024 12:37Zhao Wei LiewZhao Wei LiewCPPclang++10.0.0Error
Mar 22, 2024 12:19Zhao Wei LiewZhao Wei LiewCPPclang++10.0.0Success2,324,408
Mar 22, 2024 12:19Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success2,255,289
Mar 22, 2024 12:18Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success2,470,335
Mar 22, 2024 12:17Zhao Wei LiewZhao Wei LiewCPPg++9.4.0Success2,257,138+4.43 RP
Mar 10, 2024 23:18SrijithSrijithGOgo1.22.1Success3,284,663
Mar 10, 2024 04:52SrijithSrijithGOgo1.22.1Success1,374,333+7.28 RP
Mar 8, 2024 04:30Kailash GauthamKailash GauthamCPPg++9.4.0Success2,240,609+3.84 RP
Mar 7, 2024 13:24VoblissVoblissCPPg++9.4.0Error
Mar 7, 2024 13:22VoblissVoblissCPPg++9.4.0Success2,243,243+4.46 RP
Feb 20, 2024 19:29zypehzypehRUSTrust-1.76.0Error
Feb 20, 2024 19:23zypehzypehRUSTrust-1.76.0Error
Feb 20, 2024 19:17zypehzypehRUSTrust-1.76.0Error
Feb 20, 2024 18:22stdspstdspRUSTrust-1.76.0Success113,348
Feb 20, 2024 18:21stdspstdspRUSTrust-1.76.0Success111,904
Feb 20, 2024 18:19stdspstdspRUSTrust-1.76.0Success112,392
Feb 20, 2024 18:05zypehzypehRUSTrust-1.76.0Error
Feb 20, 2024 17:59stdspstdspRUSTrust-1.76.0Success111,846
Feb 20, 2024 17:56stdspstdspRUSTrust-1.76.0Success112,097
Feb 20, 2024 17:55zypehzypehRUSTrust-1.74.0Success164,365
Feb 20, 2024 17:54stdspstdspRUSTrust-1.76.0Success114,734
Feb 20, 2024 17:53zypehzypehRUSTrust-1.76.0Success154,685
Feb 20, 2024 17:53stdspstdspRUSTrust-1.76.0Success151,421
Feb 20, 2024 17:53stdspstdspRUSTrust-1.76.0Success113,413
Feb 20, 2024 17:51zypehzypehRUSTrust-1.76.0Error
Feb 20, 2024 17:49stdspstdspRUSTrust-1.76.0Success199,795
Feb 20, 2024 17:48stdspstdspRUSTrust-1.76.0Error
Feb 20, 2024 17:46stdspstdspRUSTrust-1.76.0Success109,726