주식 가격

시간 제한1초메모리 제한128 MB

요약
매수와 매도 주문을 처리하는 주문서를 시뮬레이션해서 주문마다 매도가, 매수가, 체결가를 계산하는 문제입니다.
난이도

보통10점 중 5점

유형
시뮬레이션, 구현, 큐
정답자
아직 제출이 없습니다

문제

이 문제에서는 간단한 호가창(order book)에서 주식 가격이 어떻게 정해지는지 시뮬레이션합니다. 다음 세 가지 가격이 중요합니다.

  • 매도 호가(ask price): 현재 누군가가 한 주를 팔고자 하는 가장 낮은 가격입니다.
  • 매수 호가(bid price): 현재 누군가가 한 주를 사고자 하는 가장 높은 가격입니다.
  • 체결가(stock price): 가장 최근에 거래가 성사된 가격입니다.

매수 호가가 매도 호가보다 크거나 같아지면 거래가 성사됩니다. 매수 호가를 제시한 매수 주문과 매도 호가를 요구한 매도 주문이 짝지어지고, 매수 주문이나 매도 주문(또는 둘 다)이 완전히 체결될 때까지 매도 호가로 주식이 거래됩니다. 가장 높은 매수 호가가 가장 낮은 매도 호가 이상인 동안 이러한 체결은 계속 반복됩니다. 매수 또는 매도 주문이 순서대로 주어질 때, 각 주문을 처리한 뒤의 매도 호가, 매수 호가, 체결가를 구하세요.

입력

첫째 줄에 테스트 케이스의 개수를 나타내는 양의 정수가 주어집니다(최대 100100). 각 테스트 케이스는 다음과 같이 주어집니다.

  • 한 줄에 정수 nn (1≤n≤10001 \le n \le 1000): 주문의 개수입니다.
  • 이어서 nn개의 줄에 각각 buy x shares at y 또는 sell x shares at y 형식의 주문이 주어집니다. buy는 매수, sell은 매도를 뜻하며, xx (1≤x≤10001 \le x \le 1000)는 주식의 수량, yy (1≤y≤10001 \le y \le 1000)는 희망 가격입니다.

출력

각 테스트 케이스마다 nn개의 줄을 출력합니다. ii번째 줄에는 ii번째 주문을 처리하고 가능한 모든 거래를 마친 뒤의 매도 호가, 매수 호가, 체결가를 공백 하나로 구분하여 a b s 형식으로 출력합니다. 어떤 가격이 정의되지 않았다면 그 자리에 -를 출력합니다. 각 테스트 케이스는 세 가격이 모두 정의되지 않은 상태에서 시작합니다.

예제6

  1. 예제 1

    입력
    2
    6
    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
    6
    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
    
  2. 예제 2

    입력
    1
    3
    buy 5 shares at 50
    buy 3 shares at 60
    buy 2 shares at 55
    
    예상 출력
    - 50 -
    - 60 -
    - 60 -
    
  3. 예제 3

    입력
    1
    3
    sell 5 shares at 50
    sell 3 shares at 40
    sell 2 shares at 45
    
    예상 출력
    50 - -
    40 - -
    40 - -
    
  4. 예제 4

    입력
    1
    2
    buy 10 shares at 100
    sell 10 shares at 100
    
    예상 출력
    - 100 -
    - - 100
    
  5. 예제 5

    입력
    1
    4
    sell 5 shares at 100
    sell 5 shares at 110
    sell 5 shares at 120
    buy 12 shares at 130
    
    예상 출력
    100 - -
    100 - -
    100 - -
    120 - 120
    
  6. 예제 6

    입력
    1
    3
    buy 4 shares at 100
    buy 6 shares at 100
    sell 8 shares at 100
    
    예상 출력
    - 100 -
    - 100 -
    - 100 100