방형구 탐색 (Hard)
시간 제한1.5초메모리 제한1024 MB
최대 200,000개 원소 배열에서 특정 꽃 종류의 구간 개수를 세는 질의와 구간 삭제 갱신을 처리한다.
문제
이 문제는 ”방형구 탐색 (Easy)”문제와 , 의 제한을 제외하고 같은 문제다.
세종이는 수행평가로 방형구 탐색을 하고 있다. 방형구는 크기의 격자 모양이며, 각 칸에는 순서대로 번부터 번까지 번호가 붙어 있다. 방형구의 각 칸에는 꽃이 한 송이씩 피어 있다. 세종이가 사는 세상에는 억 가지 종류의 꽃이 있으며, 꽃의 종류에 부터 억까지의 번호를 붙여 구분한다. 세종이는 선생님이 정해준 구간 안에 핀 특정 꽃의 개수를 조사해야 한다. 그러나 선생님은 변덕이 많기 때문에 조사해야 할 범위를 자주 바꾸었다. 이에 화가 난 세종이는 꽃을 밟아 없애기로 했다.
세종이의 수행평가를 위해 다음과 같은 쿼리를 수행하는 프로그램을 작성하시오.
1 l r k: 방형구의 번 칸부터 번 칸까지의 꽃 중 꽃의 종류가 인 꽃의 개수를 출력한다.2 l r: 세종이가 방형구의 번 칸부터 번 칸까지의 꽃을 밟아 없앤다.
입력
첫째 줄에 방형구의 크기를 나타내는 양의 정수 이 주어진다.
둘째 줄에 개의 양의 정수 이 공백으로 구분되어 주어진다. 이때 는 번 칸에 핀 꽃의 종류를 의미한다.
셋째 줄에 쿼리의 수를 나타내는 양의 정수 가 주어진다.
넷째 줄부터 개의 줄에 걸쳐 쿼리가 한 줄에 하나씩 주어진다.
번 쿼리는 하나 이상 주어진다.
출력
각 1번 쿼리마다 정답을 한 줄에 하나씩 출력한다.