일본식 제비뽑기
시간 제한4초메모리 제한1024 MB
가로줄을 하나씩 추가하거나 제거할 때마다, 모든 출발 세로선이 같은 번호의 상품에 도달하도록 제거해야 하는 가로줄의 최소 개수를 구합니다.
문제
아미다쿠지는 일본에서 인기 있는 제비뽑기로, 명에게 개의 상품을 나눠 주는 데 쓸 수 있다. 게임은 개의 세로선(다리)과 인접한 다리를 잇는 여러 개의 가로줄로 이루어진다. 다리의 윗부분이 명의 출발 위치이고, 상품은 다리의 아랫부분에 놓여 있다. 번째 사람의 상품을 알아내려면 맨 위의 번째 다리에서 출발해 아래로 내려가고, 가로줄을 만날 때마다 다리를 옮겨 탄다. 그림 J.1에 게임의 모습과 경로를 따라가는 방법이 나와 있다.

그림 J.1: 아미다쿠지 게임의 모습. 1번 사람은 3번 상품과 연결되어 있다. 모든 연결을 추가하고 하나도 제거하지 않은 상태이다. 번 사람을 번 상품과 연결하려면 2번과 3번 다리 사이의 가로줄 두 개와 3번과 4번 다리 사이의 가장 위쪽 가로줄을 제거해야 한다. 이것이 유일한 최소 해이다.
처음에는 가로줄이 없다. 이후 가로줄을 하나씩 추가하거나 다시 제거한다. 각 변경 후에, 모든 에 대해 번 사람이 번 상품을 받도록 하려면 최소 몇 개의 가로줄을 제거해야 하는지 구하라. 가로줄을 모두 제거하면 항상 가능하므로 답은 언제나 존재한다.
입력
첫 줄에 세 정수 , , (, )가 주어진다. 각각 다리의 개수, 다리의 높이, 변경 횟수이다.
이어지는 개의 줄에는 세 정수 , , (, )가 주어진다. 높이 에서 다리 과 사이의 가로줄을 추가하거나 제거하는 변경이다. 그 위치에 가로줄이 이미 있으면 제거하고, 없으면 추가한다. 두 다리는 인접함이 보장되며, 이다.
어느 순간에도 모든 가로줄의 높이는 서로 다르다.
출력
각 변경 후, 현재 존재하는 가로줄만으로 이루어진 게임에서 모든 에 대해 번 사람이 번 상품을 받도록 제거해야 하는 가로줄의 최소 개수를 한 줄에 하나씩 출력한다.