주식 가격
시간 제한1초메모리 제한128 MB
매수와 매도 주문을 처리하는 주문서를 시뮬레이션해서 주문마다 매도가, 매수가, 체결가를 계산하는 문제입니다.
문제
이 문제에서는 간단한 호가창(order book)에서 주식 가격이 어떻게 정해지는지 시뮬레이션합니다. 다음 세 가지 가격이 중요합니다.
- 매도 호가(ask price): 현재 누군가가 한 주를 팔고자 하는 가장 낮은 가격입니다.
- 매수 호가(bid price): 현재 누군가가 한 주를 사고자 하는 가장 높은 가격입니다.
- 체결가(stock price): 가장 최근에 거래가 성사된 가격입니다.
매수 호가가 매도 호가보다 크거나 같아지면 거래가 성사됩니다. 매수 호가를 제시한 매수 주문과 매도 호가를 요구한 매도 주문이 짝지어지고, 매수 주문이나 매도 주문(또는 둘 다)이 완전히 체결될 때까지 매도 호가로 주식이 거래됩니다. 가장 높은 매수 호가가 가장 낮은 매도 호가 이상인 동안 이러한 체결은 계속 반복됩니다. 매수 또는 매도 주문이 순서대로 주어질 때, 각 주문을 처리한 뒤의 매도 호가, 매수 호가, 체결가를 구하세요.
입력
첫째 줄에 테스트 케이스의 개수를 나타내는 양의 정수가 주어집니다(최대 ). 각 테스트 케이스는 다음과 같이 주어집니다.
- 한 줄에 정수 (): 주문의 개수입니다.
- 이어서 개의 줄에 각각
buy x shares at y또는sell x shares at y형식의 주문이 주어집니다.buy는 매수,sell은 매도를 뜻하며, ()는 주식의 수량, ()는 희망 가격입니다.
출력
각 테스트 케이스마다 개의 줄을 출력합니다. 번째 줄에는 번째 주문을 처리하고 가능한 모든 거래를 마친 뒤의 매도 호가, 매수 호가, 체결가를 공백 하나로 구분하여 a b s 형식으로 출력합니다. 어떤 가격이 정의되지 않았다면 그 자리에 -를 출력합니다. 각 테스트 케이스는 세 가격이 모두 정의되지 않은 상태에서 시작합니다.