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 4, 2023 11:13Sergey StreminSergey StreminRUSTrust-1.59.0Success90,696+4.07 RP
Dec 4, 2023 11:13Sergey StreminSergey StreminRUSTrust-1.59.0Success98,131
Dec 4, 2023 11:12Sergey StreminSergey StreminRUSTrust-1.59.0Success94,171+1.97 RP
Dec 4, 2023 11:09Sergey StreminSergey StreminRUSTrust-1.59.0Error
Dec 4, 2023 11:06Sergey StreminSergey StreminRUSTrust-1.59.0Success104,736
Dec 4, 2023 10:47Sergey StreminSergey StreminRUSTrust-1.59.0Success112,737
Dec 4, 2023 10:46Sergey StreminSergey StreminRUSTrust-1.59.0Error
Dec 4, 2023 10:43Sergey StreminSergey StreminRUSTrust-1.74.0Success108,814
Dec 4, 2023 10:42Sergey StreminSergey StreminRUSTrust-1.59.0Success108,580
Dec 4, 2023 10:36Sergey StreminSergey StreminRUSTrust-1.59.0Error
Dec 4, 2023 08:46matsuoka-601matsuoka-601CPPclang++10.0.0Error
Dec 4, 2023 08:41matsuoka-601matsuoka-601CPPclang++10.0.0Error
Dec 4, 2023 08:40matsuoka-601matsuoka-601CPPclang++10.0.0Error
Dec 4, 2023 08:37matsuoka-601matsuoka-601CPPclang++10.0.0Error
Dec 4, 2023 08:36matsuoka-601matsuoka-601CPPclang++10.0.0Error
Dec 4, 2023 08:33matsuoka-601matsuoka-601CPPclang++10.0.0Error
Dec 4, 2023 06:30Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success68,223
Dec 4, 2023 06:29Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success62,390+31.92 RP
Dec 4, 2023 06:24Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Dec 4, 2023 06:23Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Dec 4, 2023 06:23Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Success48,019
Dec 4, 2023 06:15Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Success48,360
Dec 4, 2023 06:15Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Success48,650
Dec 4, 2023 06:13Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Dec 4, 2023 06:13Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Dec 4, 2023 06:12Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Dec 4, 2023 06:12Yuriy LyfenkoYuriy LyfenkoCPPg++9.3.0Error
Dec 4, 2023 06:11Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success78,378
Dec 4, 2023 06:02Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success77,903+12.88 RP
Dec 4, 2023 05:54Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 4, 2023 05:53Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 4, 2023 05:53yenw0dyenw0dGOgo1.21.3Error
Dec 4, 2023 05:49Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success103,016
Dec 4, 2023 05:48Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success86,595+18.30 RP
Dec 4, 2023 05:47Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success102,904+16.10 RP
Dec 4, 2023 05:46Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success123,339+70.76 RP
Dec 4, 2023 05:45Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Success969,311
Dec 4, 2023 04:18Will RiegerWill RiegerRUSTrust-1.74.0Success3,443,227
Dec 4, 2023 04:03Will RiegerWill RiegerRUSTrust-1.74.0Success2,473,855
Dec 4, 2023 04:02Will RiegerWill RiegerRUSTrust-1.74.0Success2,967,967
Dec 4, 2023 03:53Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 4, 2023 03:28Will RiegerWill RiegerRUSTrust-1.74.0Success2,990,149
Dec 4, 2023 03:16Will RiegerWill RiegerRUSTrust-1.74.0Success3,062,901
Dec 4, 2023 03:15Will RiegerWill RiegerRUSTrust-1.74.0Success2,190,532+1.17 RP
Dec 4, 2023 03:11yenw0dyenw0dGOgo1.21.3Success455,485
Dec 4, 2023 03:05Will RiegerWill RiegerRUSTrust-1.74.0Success4,106,470
Dec 4, 2023 03:04Will RiegerWill RiegerRUSTrust-1.74.0Success2,945,010+0.73 RP
Dec 4, 2023 02:57Will RiegerWill RiegerRUSTrust-1.74.0Success5,098,313
Dec 4, 2023 02:56Will RiegerWill RiegerRUSTrust-1.74.0Success8,337,996
Dec 4, 2023 02:53Will RiegerWill RiegerRUSTrust-1.74.0Success3,751,853+0.63 RP
Dec 4, 2023 00:39parastromparastromRUSTrust-1.74.0Error
Dec 4, 2023 00:35parastromparastromRUSTrust-1.74.0Error
Dec 3, 2023 23:18parastromparastromRUSTrust-1.74.0Error
Dec 3, 2023 23:17parastromparastromRUSTrust-1.74.0Error
Dec 3, 2023 23:15parastromparastromRUSTrust-1.74.0Error
Dec 3, 2023 22:46Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 3, 2023 22:45Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 3, 2023 22:44Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 3, 2023 22:16Will RiegerWill RiegerRUSTrust-1.74.0Success4,904,535+0.04 RP
Dec 3, 2023 21:55Will RiegerWill RiegerRUSTrust-1.74.0Success5,166,198
Dec 3, 2023 21:52Will RiegerWill RiegerRUSTrust-1.74.0Success6,125,779
Dec 3, 2023 21:51Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:33Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:26Will RiegerWill RiegerRUSTrust-1.74.0Success6,650,974
Dec 3, 2023 21:25Will RiegerWill RiegerRUSTrust-1.74.0Success6,091,159
Dec 3, 2023 21:23Will RiegerWill RiegerRUSTrust-1.74.0Success5,007,437+2.00 RP
Dec 3, 2023 21:22Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:22Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:160xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:150xkake0xkakeRUSTrust-1.74.0Success535,861
Dec 3, 2023 21:150xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:150xkake0xkakeRUSTrust-1.74.0Success983,981
Dec 3, 2023 21:140xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:140xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:130xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:120xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:110xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:110xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:10Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:100xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:090xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 21:09Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:090xkake0xkakeRUSTrust-1.74.0Success815,321
Dec 3, 2023 21:07Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:04Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 21:04Jeff GreenJeff GreenCPPg++9.3.0Success10,171,225
Dec 3, 2023 21:02Jeff GreenJeff GreenCPPg++9.3.0Success10,192,267
Dec 3, 2023 20:59Jeff GreenJeff GreenCPPg++9.3.0Success4,211,914
Dec 3, 2023 20:59Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 20:58Jeff GreenJeff GreenCPPg++9.3.0Success2,261,781+0.01 RP
Dec 3, 2023 20:580xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 20:570xkake0xkakeRUSTrust-1.74.0Error
Dec 3, 2023 20:530xkake0xkakeRUSTrust-1.74.0Success1,090,097
Dec 3, 2023 20:50Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 20:470xkake0xkakeRUSTrust-1.74.0Success720,607
Dec 3, 2023 20:39Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 3, 2023 20:37Yuriy LyfenkoYuriy LyfenkoCSHARP8.0.0Error
Dec 3, 2023 20:30Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 20:29Will RiegerWill RiegerRUSTrust-1.74.0Error
Dec 3, 2023 20:27Will RiegerWill RiegerRUSTrust-1.74.0Error