만드는 중입니다

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

감성 테트리스

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

요약
가로 1x4 블록과 세로 4x1 블록을 Q번 떨어뜨립니다. 매번 떨어진 블록을 직접 또는 간접으로 받치는 블록의 개수를 구합니다.
난이도

어려움10점 중 8점

유형
세그먼트 트리, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

디디는 1×41 \times 4 크기의 'ㅡ'자 블럭과 4×14 \times 1 크기의 'ㅣ'자 블럭만 사용하는 테트리스를 하고 있다. 이 테트리스에서는 블럭을 떨어뜨릴 위치만 정하면 그 위치에서 수직으로 떨어진다. 블럭을 좌우로 움직이거나 회전시킬 수 없다. 떨어지는 블럭의 아랫면이 다른 블럭의 윗면이나 바닥과 1칸이라도 맞닿으면 블럭은 멈추고 맞닿은 면 위에 쌓인다.

'이 블럭이 떨어지면 그 밑에 있는 블럭들은 많이 아프겠ㄷr...' 감성으로 테트리스를 하는 디디는 블럭이 떨어질 때 하중을 받는 블럭의 개수를 구하려고 한다. 떨어지는 블럭의 아랫면과 면을 공유하는 블럭은 하중을 받는다. 하중을 받은 블럭의 아랫면과 면을 공유하는 블럭도 하중을 받는다.

<빨간색 블럭은 이번에 떨어뜨린 블럭이며, 노란색 블럭은 이때 하중을 받는 블럭이다.>

착한 leejseo는 감성이 풍부한 디디를 위해, 디디가 블럭을 떨어뜨릴 때마다 그 블럭이 받는 하중의 블럭 개수를 구하는 프로그램을 작성하려고 한다. leejseo를 따라서 디디를 도와주자.

입력

첫째 줄에 디디가 떨어뜨린 블럭의 개수 QQ(1≤Q≤1051 \le Q \le 10^5)가 주어진다.

둘째 줄부터 QQ개의 각 줄에는 디디가 떨어뜨린 블럭의 정보가 주어진다. 각 줄은 아래 두 형식 중 하나이다.

  • 1 aa : 블럭의 왼쪽 끝 칸이 위치 aa에 오도록 'ㅡ'자 블럭을 떨어뜨린다.
  • 2 aa : 위치 aa에 'ㅣ'자 블럭을 떨어뜨린다.

aa는 항상 정수이며, 어떤 블럭의 부분도 위치 1부터 400,000까지의 범위를 벗어나지 않는다.

출력

QQ개의 각 줄에 디디가 블럭을 떨어뜨릴 때마다, 그 블럭이 하중을 받는 블럭의 개수를 출력한다.

예제2

  1. 예제 1

    입력
    6
    1 5
    2 5
    2 6
    2 7
    2 8
    1 5
    
    예상 출력
    0
    1
    1
    1
    1
    5
    
  2. 예제 2

    입력
    9
    1 5
    1 9
    1 6
    1 5
    1 7
    1 11
    1 11
    1 11
    1 9
    
    예상 출력
    0
    0
    2
    3
    4
    1
    2
    3
    8