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
Aug 17, 2026 22:01lh14576lh14576CPPg++10.5.0Error+20.10 RP
Aug 17, 2026 21:38lh14576lh14576CPPg++10.5.0Error
Aug 17, 2026 21:00Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success56,120
Aug 17, 2026 20:54Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success55,155
Aug 17, 2026 20:43Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error+28.03 RP
Aug 17, 2026 20:33Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success65,527
Aug 17, 2026 20:27Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error+56.20 RP
Aug 17, 2026 20:16Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 20:12Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 20:09Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 20:04Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 19:56Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success119,351
Aug 17, 2026 19:51Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 19:44Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success119,003
Aug 17, 2026 19:39Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success131,191
Aug 17, 2026 19:32Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 19:24Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success136,744
Aug 17, 2026 19:23Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 16:59Uladzislau NestsiarukUladzislau NestsiarukCPPg++14.2.0Success117,732
Aug 17, 2026 16:56Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 16:53Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 16:44Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success108,856
Aug 17, 2026 16:43Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success117,356
Aug 17, 2026 16:37Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 16:37Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 17, 2026 16:27Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 23:15Tomislav TunkovicTomislav TunkovicZIG0.15.1Error
Aug 16, 2026 23:14Tomislav TunkovicTomislav TunkovicGOgo1.26.2Success159,836
Aug 16, 2026 23:12Tomislav TunkovicTomislav TunkovicRUSTrust-1.95.0Error
Aug 16, 2026 19:08Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success113,351
Aug 16, 2026 19:04Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success127,818
Aug 16, 2026 18:55Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success106,750
Aug 16, 2026 18:51Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 18:35Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success122,884
Aug 16, 2026 18:33Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success130,287
Aug 16, 2026 18:31Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 18:25Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success110,536
Aug 16, 2026 18:21Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success129,672
Aug 16, 2026 18:17Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success102,227+3.52 RP
Aug 16, 2026 18:08Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success106,048+1.14 RP
Aug 16, 2026 18:03Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success144,381
Aug 16, 2026 17:52Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success113,670
Aug 16, 2026 17:49Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 13:41Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success129,124
Aug 16, 2026 13:39Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success138,855
Aug 16, 2026 13:38Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 13:24Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success108,815
Aug 16, 2026 13:19Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success115,522
Aug 16, 2026 13:11Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success5,903,846
Aug 16, 2026 13:07Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success135,722
Aug 16, 2026 13:01Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error+21.54 RP
Aug 16, 2026 12:58Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 12:43Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success2,249,900
Aug 16, 2026 12:36Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Aug 16, 2026 12:27Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error+57.25 RP
Aug 16, 2026 12:20Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Error
Aug 16, 2026 12:18Uladzislau NestsiarukUladzislau NestsiarukCPPclang++19.1.1Error
Aug 16, 2026 12:02Uladzislau NestsiarukUladzislau NestsiarukCPPclang++19.1.1Error
Aug 16, 2026 11:49Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success695,768+0.27 RP
Aug 16, 2026 11:43Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Aug 16, 2026 11:31Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Aug 16, 2026 11:30Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Aug 16, 2026 11:20Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Aug 16, 2026 11:15Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Error
Aug 16, 2026 10:40Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success1,396,755
Aug 16, 2026 10:29Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success757,422
Aug 16, 2026 10:22Uladzislau NestsiarukUladzislau NestsiarukCPPg++10.5.0Success750,915
Aug 15, 2026 21:35marko1597marko1597CPPclang++18.1.3Success75,481
Aug 15, 2026 21:31marko1597marko1597CPPclang++18.1.3Error+431.73 RP
Aug 15, 2026 13:45marko1597marko1597CPPclang++18.1.3Error+2.67 RP
Aug 15, 2026 13:41marko1597marko1597CPPclang++18.1.3Error+318.75 RP
Aug 15, 2026 13:37marko1597marko1597CPPclang++19.1.0Error
Aug 15, 2026 13:31marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:24marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:18marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:14marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:10marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:08marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:03marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 13:01marko1597marko1597CPPclang++18.1.3Success46,455
Aug 15, 2026 12:58marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 12:44marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 12:41marko1597marko1597CPPclang++18.1.3Error+52.75 RP
Aug 15, 2026 12:38Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+1.29 RP
Aug 15, 2026 12:37marko1597marko1597CPPclang++18.1.3Error+131.16 RP
Aug 15, 2026 12:29Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+6.98 RP
Aug 15, 2026 12:29marko1597marko1597CPPclang++18.1.3Error+56.37 RP
Aug 15, 2026 12:27Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+1.62 RP
Aug 15, 2026 12:25marko1597marko1597CPPclang++18.1.3Error+198.50 RP
Aug 15, 2026 12:22Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+7.65 RP
Aug 15, 2026 12:22marko1597marko1597CPPclang++19.1.1Success98,836
Aug 15, 2026 12:19marko1597marko1597CPPclang++18.1.3Error+11.79 RP
Aug 15, 2026 12:16marko1597marko1597CPPclang++18.1.3Error+1'858.47 RP
Aug 15, 2026 12:13marko1597marko1597CPPclang++18.1.3Success94,667
Aug 15, 2026 12:12Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+6.75 RP
Aug 15, 2026 12:07marko1597marko1597CPPclang++16.0.6Error
Aug 15, 2026 12:05Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+26.57 RP
Aug 15, 2026 12:05marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 12:03marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 12:01marko1597marko1597CPPclang++18.1.3Error