问题 4389 --2011年校内赛 - C 股票买卖

4389: 2011年校内赛 - C 股票买卖

时间限制: 1 Sec  内存限制: 128 MB
提交: 0  解决: 0
[提交][状态][讨论版][命题人:]

题目描述

    在这个题中我们要处理某一只股票的买卖。你必须先了解一下三种价格。

 

    最低卖出价:所有要卖出该股票的人要价的最低值。

    最高买入价:所有要买进该股票的人出价的最高值。

    最近交易价:最近的一笔交易中成交的价格。

 

    当出现最高买入价大于或等于最低卖出价时,交易发生。从最高买入价交易,每一笔买入请求,从最低卖出价开始匹配,如果最低卖出价的股票数不够买,此时最低卖出价的股票都被买完,最低卖出价改变,继续匹配。交易成交的价格为卖出请求的要价。如果最高买入价的买入请求已经满足,则处理下一笔买入请求。交易截止的条件是,当前的最高买入价小于最低卖出价或者没有卖出请求或者没有买入请求。

    注意:如果在某次交易请求后,没发生交易,则最近交易价为上一次请求后的最近交易价。(当然上一次请求后的最近交易价要存在)

 

    现在给你一份交易请求列表,请你输出该交易过后的最低卖出价,最高买入价和最近交易价。

输入

 多组测试数据。测试数据的开头是一个正整数t,表示测试数据的组数。

    每一组测试数据以一个正整数n开头,表示交易请求的个数。接下来n行,每一行有三个整数opxyop表示该交易请求的种类,x表示请求交易的股数,y表示交易请求的价格。当op=0的时候,表示交易为卖出,当op=1的时候,表示交易为买入。(1 ≤ n ≤ 1 0001 ≤ x ≤ 1 0001 ≤ y ≤ 1 000)

输出

 每一组测试数据输出n行,每一行输出三个整数,分别是最低卖出价,最高买入价,最近交易价。两个整数之间有一个空格。如果某种价格当前没意义,则输出“-”代替。

样例输入

2
6
1 10 100
0 1 120
0 20 110
1 30 110
0 10 99
1 1 120
6
0 10 100
1 1 80
1 20 90
0 30 90
1 10 101
0 1 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

提示


第一组样例:


1、 请求买入10股,请求价格为100,没有最低卖出价,最高买入价是100,没有最近交易价。


2、 请求卖出1股,请求价格为120,最低卖出价为是120,最高买入价是100,没有最近交易价。


3、 请求卖出20股,请求价格为110,最低卖出价为是110,最高买入价是100,没有最近交易价。


4、 请求买入30股,请求价格为110,交易发生,20股请求卖出价格为110的股票卖给请求买入价格为110的人。交易完成后,最低卖出价为是120,最高买入价是110,最近交易价是110。


5、 请求卖出10股,请求价格为99,交易发生,10股请求卖出价格为99的股票卖给请求买入价格为110的人。交易完成后,最低卖出价为是120,最高买入价是100,最近交易价是99。


6、 请求买入1股,请求价格为120,交易发生,1股请求卖出价格为120的股票卖给请求买入价格为120的人。交易完成后,没有最低卖出价,最高买入价是100,最近交易价是120。



来源

[提交][状态]