만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Grow Measure Cut Repeat

시간 제한2초메모리 제한1024 MB

요약
10만 그루의 나무에 삼각형 모양으로 물을 주는 명령, 높이 상한으로 자르는 명령, 특정 나무의 높이를 재는 명령을 차례로 처리하고 측정값을 출력합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 구현, 수학
정답자
아직 제출이 없습니다

문제

UCF 프로그래밍 팀 코치들은 세계에서 가장 경험이 많은 코칭 그룹이다. 이들은 지구의 숲이 사라지는 문제에도 관심이 많다. 코치들은 1차원 숲을 만들기로 했다. 1부터 10510^5까지 각 정수 위치에 나무 씨앗을 하나씩 심었다. 이 10510^5그루의 나무는 모두 높이가 0이다. 코치들은 앨리스, 밥, 커츠 세 명의 산지기를 고용해 이 숲을 관리하게 했다. 이들의 능력을 보면 요정이나 다름없다.

앨리스는 나무가 자라는 모습을 보는 것을 좋아한다. 그녀는 마법의 물뿌리개를 받았다. 이 물뿌리개로 나무에 KK단위의 물을 주면 그 나무가 KK단위만큼 자란다. 또한 물을 준 자리에서 거리가 DD(D<KD < K)인 나무는 K−DK-D단위만큼 자란다.

밥은 나무에 올라가는 것을 좋아한다. 그는 어떤 나무의 높이든 잴 수 있는 특수한 줄자를 가지고 있다.

커츠는 숲의 모든 나무를 특정 높이로 자르는 것을 좋아한다. 키가 더 큰 나무는 새 높이로 잘리고, 키가 작은 나무는 영향을 받지 않는다. 커츠는 기준 높이(최대 높이)를 정하고, 그보다 키가 큰 나무를 모두 그 높이로 자른다. 커츠는 감소하는 수열을 좋아하므로, 첫 번째 자르기를 제외하면 매번 이전보다 낮은 높이로 자른다.

앨리스, 밥, 커츠가 수행한 명령 목록이 주어질 때, 밥이 각 명령에서 잰 나무의 높이를 구하라. 모든 나무는 처음에 높이가 0이다.

입력

첫 줄에 명령의 개수 tt(1≤t≤2×1051 \le t \le 2 \times 10^5)가 주어진다. 이어지는 tt개의 줄은 다음 세 가지 형식 중 하나이다.

A L K
B L
C H
  • A L K: 앨리스가 위치 LL(1≤L≤1051 \le L \le 10^5)의 나무에 KK(1≤K≤1061 \le K \le 10^6)단위의 물을 준다. 나무들은 위에서 설명한 대로 자란다.
  • B L: 밥이 위치 LL(1≤L≤1051 \le L \le 10^5)의 나무 높이를 잰다.
  • C H: 커츠가 모든 나무를 높이 HH(1≤H≤1081 \le H \le 10^8)로 자른다.

출력

앨리스와 커츠의 명령에서는 출력하지 않는다. 밥의 명령(B L)마다 밥이 잰 나무의 높이를 한 줄에 출력한다.

예제2

  1. 예제 1

    입력
    6
    A 7 5
    B 6
    C 4
    A 5 4
    B 6
    B 7
    
    예상 출력
    4
    7
    6
    
  2. 예제 2

    입력
    7
    A 10 8
    B 10
    C 6
    A 10 8
    C 4
    B 3
    B 5
    
    예상 출력
    8
    2
    4