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 16, 2026 13:01Uladzislau NestsiarukUladzislau NestsiarukCPPclang++20.1.2Success107,341+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
Aug 15, 2026 11:59marko1597marko1597CPPclang++17.0.6Error
Aug 15, 2026 11:59marko1597marko1597CPPclang++18.1.3Error+13.91 RP
Aug 15, 2026 11:56marko1597marko1597CPPclang++19.1.1Error+0.39 RP
Aug 15, 2026 11:53marko1597marko1597CPPclang++19.1.1Error
Aug 15, 2026 11:46marko1597marko1597CPPclang++19.1.1Success1,262,744
Aug 15, 2026 11:45Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error
Aug 15, 2026 11:42marko1597marko1597CPPclang++19.1.1Error
Aug 15, 2026 11:41marko1597marko1597CPPclang++19.1.1Error+5.24 RP
Aug 15, 2026 11:38marko1597marko1597CPPclang++19.1.1Success1,291,567
Aug 15, 2026 11:35marko1597marko1597CPPclang++19.1.1Error+1.49 RP
Aug 15, 2026 11:34marko1597marko1597CPPclang++18.1.3Error+7.44 RP
Aug 15, 2026 11:31marko1597marko1597CPPclang++18.1.3Error
Aug 15, 2026 11:29marko1597marko1597CPPg++14.2.0Error
Aug 15, 2026 11:29marko1597marko1597CPPclang++17.0.6Error
Aug 15, 2026 11:28marko1597marko1597CPPclang++18.1.3Error+4.09 RP
Aug 15, 2026 11:27marko1597marko1597CPPclang++19.1.1Error+6.43 RP
Aug 15, 2026 11:24marko1597marko1597CPPclang++20.1.2Success83,075
Aug 15, 2026 08:47marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 08:28marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 08:25marko1597marko1597CPPclang++20.1.2Success854,241
Aug 15, 2026 00:14marko1597marko1597CPPclang++20.1.2Error+1.69 RP
Aug 15, 2026 00:11marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 00:09marko1597marko1597CPPclang++20.1.2Error+4.55 RP
Aug 15, 2026 00:07marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 00:05marko1597marko1597CPPclang++20.1.2Error+49.67 RP
Aug 15, 2026 00:04Tomislav TunkovicTomislav TunkovicCPPg++14.2.0Error
Aug 15, 2026 00:03marko1597marko1597CPPclang++20.1.2Error
Aug 15, 2026 00:02marko1597marko1597CPPclang++20.1.2Success157,118
Aug 14, 2026 23:59marko1597marko1597CPPclang++20.1.2Success1,471,715
Aug 14, 2026 23:56marko1597marko1597CPPclang++20.1.2Error+3.44 RP
Aug 14, 2026 23:55marko1597marko1597CPPclang++20.1.2Success2,472,960
Aug 14, 2026 23:53marko1597marko1597CPPclang++20.1.2Success3,391,081
Aug 14, 2026 23:50marko1597marko1597CPPclang++20.1.2Error+0.38 RP
Aug 14, 2026 23:42Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+14.08 RP
Aug 14, 2026 23:39marko1597marko1597CPPclang++20.1.2Success1,840,589
Aug 14, 2026 23:34Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error
Aug 14, 2026 23:32marko1597marko1597CPPclang++20.1.2Error+10.16 RP
Aug 14, 2026 23:31marko1597marko1597CPPclang++20.1.2Error+12.67 RP
Aug 14, 2026 23:24marko1597marko1597CPPclang++20.1.2Success10,367,991
Aug 14, 2026 23:22marko1597marko1597CPPclang++20.1.2Error+14.83 RP
Aug 14, 2026 23:20marko1597marko1597CPPg++14.2.0Success200,556
Aug 14, 2026 23:14marko1597marko1597CPPg++14.2.0Success46,381+12.10 RP
Aug 14, 2026 23:13Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error
Aug 14, 2026 23:09marko1597marko1597CPPg++14.2.0Success49,139+6.85 RP
Aug 14, 2026 23:07marko1597marko1597CPPg++14.2.0Error
Aug 14, 2026 22:58marko1597marko1597CPPg++14.2.0Error+149.98 RP
Aug 14, 2026 22:50marko1597marko1597CPPg++14.2.0Error
Aug 14, 2026 22:32Tomislav TunkovicTomislav TunkovicCPPclang++20.1.2Error+333.91 RP
Aug 14, 2026 22:29marko1597marko1597CPPg++14.2.0Success214,237+17.68 RP
Aug 14, 2026 22:04marko1597marko1597CPPg++14.2.0Success344,889+28.99 RP