Problem E
Stock Prices

In this problem we deal with the calculation of stock prices. You need to know the following things about stock prices:

  • The ask price is the lowest price at which someone is willing to sell a share of a stock.

  • The bid price is the highest price at which someone is willing to buy a share of a stock.

  • The stock price is the price at which the last deal was established.

Whenever the bid price is greater than or equal to the ask price, a deal is established. A buy order offering the bid price is matched with a sell order demanding the ask price, and shares are exchanged at the rate of the ask price until either the sell order or the buy order (or both) is fulfilled (i.e., the buyer wants no more stocks, or the seller wants to sell no more stocks). You will be given a list of orders (either buy or sell) and you have to calculate, after each order, the current ask price, bid price and stock price.


On the first line a positive integer: the number of test cases, at most 100. After that per test case:

  • One line with an integer $n$ $(1 \le n \le 1\, 000)$: the number of orders.

  • $n$ lines of the form “order_type $x$ shares at $y$”, where order_type is either “buy” or “sell”, $x$ ($1 \le x \le 1\, 000$) is the number of shares of a stock someone wishes to buy or to sell, and $y$ ($1 \le y \le 1\, 000$) is the desired price.


Per test case:

  • $n$ lines, each of the form “$a_ i$ $b_ i$ $s_ i$”, where $a_ i$, $b_ i$ and $s_ i$ are the current ask, bid and stock prices, respectively, after the $i$-th order has been processed and all possible deals have taken place. Whenever a price is not defined, output “-” instead of the price.

Sample Input 1 Sample Output 1
buy 10 shares at 100
sell 1 shares at 120
sell 20 shares at 110
buy 30 shares at 110
sell 10 shares at 99
buy 1 shares at 120
sell 10 shares at 100
buy 1 shares at 80
buy 20 shares at 90
sell 30 shares at 90
buy 10 shares at 101
sell 1 shares at 80
- 100 -
120 100 -
110 100 -
120 110 110
120 100 99
- 100 120
100 - -
100 80 -
100 90 -
90 80 90
100 80 90
100 - 80

Please log in to submit a solution to this problem

Log in