Stacking Sticks

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

요약
1x4와 4x1 블록을 떨어뜨리며 각 x좌표에서 블록의 최대 y좌표를 답한다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

사토리는 가로로 긴 1×41 \times 4 블럭과, 세로로 긴 4×14 \times 1 블럭을 쌓는 놀이를 하고 있다. 블럭이 떨어질 위치를 고르면 이 블럭은 그대로 수직 방향으로 떨어진다. 떨어지는 도중 블럭의 아래쪽 면의 일부분이 다른 블럭의 윗면 또는 바닥과 닿는다면, 블럭은 떨어지는 것을 멈춘다. 이때 좌우로 인접한 블럭끼리는 스쳐 지나갈 수 있다.

사토리를 위해, 여러분은 다음 쿼리를 처리하는 프로그램을 작성해야 한다.

  • 1 i:1\ i: 가로로 긴 1×41 \times 4 블럭의 왼쪽 끝 칸이 x=ix = i에 위치하게 블럭을 떨어뜨린다.
  • 2 i:2\ i: 세로로 긴 4×14 \times 1 블럭이 x=ix = i에 위치하게 블럭을 떨어뜨린다.
  • 3 i:3\ i: x=ix = i에 존재하는 블럭의 yy좌표의 최댓값을 출력한다. 해당 xx좌표에 블럭이 존재하지 않는다면 00을 출력한다.

입력

첫 번째 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤150,000)(1 \leq Q \leq 150\\,000)

두 번째 줄부터 QQ개의 줄에 걸쳐 쿼리가 주어진다. 33번 쿼리는 한 번 이상 주어진다. (−109≤i≤109, i(-10^9 \leq i \leq 10^9,\ i는 정수))

출력

33번 쿼리의 답을 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    5
    1 1
    2 3
    1 2
    3 1
    3 5
    
    예상 출력
    1
    6