만드는 중입니다

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

사다리 갱신

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

요약
사다리에 다리를 추가하거나 삭제하는 질의가 주어질 때, 같은 결과를 내는 최소 다리 수를 질의마다 구합니다.
난이도

어려움10점 중 9점

유형
세그먼트 트리, 분할 정복, 배열, 정렬
정답자
아직 제출이 없습니다

문제

사다리 게임은 한국뿐 아니라 중국과 일본에서도 널리 하는 게임이다. 위키백과에 따르면 한국에서는 사다리타기, 일본에서는 아미다쿠지(阿弥陀籤, "아미다 제비"), 중국에서는 구이자오투(鬼腳圖, "귀신 다리 그림")라고 부른다.

사다리 판은 nn개의 세로선으로 이루어지며, 인접한 세로선은 가로줄로 이어진다. 각 세로선에는 위쪽 시작점과 아래쪽 끝점이 있다. 규칙은 간단하다.

  • 세로선의 시작점에서 출발해 아래로 내려간다. 가로줄을 만나면 그 가로줄을 따라 옆 세로선으로 이동한 뒤, 세로선의 끝에 도달할 때까지 계속 내려간다.

세로선은 왼쪽부터 11번에서 nn번까지 번호가 매겨진다. 게임 결과는 \[1,2,…,n]\[1, 2, \dots, n]의 순열이다. 아래 그림은 세로선 44개와 가로줄 55개로 이루어져 있으며, 결과는 왼쪽부터 \[2,3,4,1]\[2, 3, 4, 1]이다.

가로줄 중에는 없어도 되는 것이 있다. 가로줄이 더 적어도 같은 결과 \[2,3,4,1]\[2, 3, 4, 1]을 얻을 수 있다. 아래 그림에서는 맨 위와 맨 아래 가로줄을 제외하면 가로줄 33개만으로 같은 결과가 나온다. 같은 결과를 내는 가로줄의 최소 개수를 구한다. 필요하면 새 가로줄을 그려도 된다.

qq개의 질의가 주어진다. 각 질의는 가로줄을 추가하거나 기존 가로줄을 삭제한다. 질의는 누적되므로, 각 질의는 이전 질의까지 반영된 사다리에 적용된다. 각 질의를 처리한 뒤의 사다리와 같은 결과를 내는 가로줄의 최소 개수를 구한다.

입력

첫 줄에 세 정수 nn, mm, qq가 공백으로 구분되어 주어진다. 2≤n≤100 0002 \le n \le 100\,000, 1≤m≤100 0001 \le m \le 100\,000, 1≤q≤100 0001 \le q \le 100\,000이다.

다음 mm개의 줄에는 두 양의 정수 hh와 aa가 주어진다. 이는 높이 hh에서 aa번째 세로선과 a+1a + 1번째 세로선을 잇는 가로줄이 있다는 뜻이다. 단, 1≤a≤n−11 \le a \le n - 1이다. 높이는 위에서 아래로 11부터 번호가 매겨지며, h≤109h \le 10^9이다.

다음 qq개의 줄에는 질의가 주어진다. 질의는 A hh aa 또는 D hh aa의 형태이며, 1≤h≤1091 \le h \le 10^9, 1≤a≤n−11 \le a \le n - 1이다.

  • A hh aa: 높이 hh에서 aa번째와 a+1a + 1번째 세로선 사이에 가로줄을 추가한다.
  • D hh aa: 높이 hh에서 aa번째와 a+1a + 1번째 세로선 사이의 가로줄을 삭제한다.

모순되는 연산은 주어지지 않는다. 이미 있는 가로줄을 다시 추가하지 않고, 없는 가로줄을 삭제하지 않는다. 또한 같은 세로선의 같은 높이에 있는 끝점을 공유하는 두 가로줄은 없다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 ii번째 질의를 처리한 뒤의 사다리와 같은 게임 결과를 내는 가로줄의 최소 개수를 출력한다.

예제2

  1. 예제 1

    입력
    4 4 3
    3 1
    2 2
    5 2
    6 3
    A 7 1
    A 4 3
    D 3 1
    
    예상 출력
    3
    6
    3
    
  2. 예제 2

    입력
    4 5 5
    3 1
    2 2
    5 2
    6 3
    7 1
    D 6 3
    D 7 1
    D 5 2
    D 3 1
    D 2 2
    
    예상 출력
    2
    3
    2
    1
    0