만드는 중입니다

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

Mex와 카드

시간 제한3초메모리 제한1024 MB

요약
0부터 n-1까지 값이 적힌 카드를 여러 묶음으로 나눌 때, 각 묶음 mex 합의 최댓값을 초기 덱과 카드 추가·제거 q번 이후마다 구합니다.
난이도

보통10점 중 7점

유형
세그먼트 트리, 그리디, 수학
정답자
아직 제출이 없습니다

문제

Mike는 카드를 가지고 노는 것을 좋아한다. 그의 덱에 있는 각 카드에는 0부터 n-1까지의 정수 하나가 적혀 있다. 처음에 덱에는 값이 i인 카드가 aia_i장 있다.

Mike는 오늘 mex 개념을 배우고 있다. 정수 집합의 mex는 집합에 속하지 않는 가장 작은 0 이상의 정수이다. 예를 들어 mex⁡({4,1,4,12,0,7,0,0,5})=2\operatorname{mex}(\{4, 1, 4, 12, 0, 7, 0, 0, 5\}) = 2이다.

Mike는 덱의 모든 카드를 비어 있지 않은 더미들로 나눈다. 각 카드는 정확히 한 더미에 속한다. 그다음 각 더미에 있는 카드 값의 mex를 구해 모두 더한다. Mike는 이 합이 최대가 되는 분배를 찾고 싶어 한다.

덱에는 q번의 수정이 일어난다. 카드가 추가되기도 하고 제거되기도 한다. Mike는 첫 번째 수정 전과, 각 i = 1, 2, \ldots, q에 대해 처음 i번의 수정 후에 mex 합이 최대가 되는 분배를 구하고 싶어 한다.

입력

첫 줄에는 카드 값의 범위 n이 주어진다 (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5).

둘째 줄에는 n개의 정수 a0,a1,…,an−1a_0, a_1, \ldots, a_{n-1}이 주어진다. 이는 처음 덱에 있는 값 0, 1, \ldots, n-1 카드의 개수이다 (0≤ai≤1060 \le a_i \le 10^6).

셋째 줄에는 덱 수정 횟수 q가 주어진다 (0≤q≤2⋅1050 \le q \le 2 \cdot 10^5).

다음 q개의 줄 중 i번째 줄에는 i번째 수정을 나타내는 두 정수 pip_i와 viv_i가 주어진다 (1≤pi≤21 \le p_i \le 2, 0≤vi<n0 \le v_i < n). pi=1p_i = 1이면 값이 viv_i인 새 카드를 덱에 추가한다. pi=2p_i = 2이면 값이 viv_i인 카드를 덱에서 제거한다.

pi=2p_i = 2이면, i번째 수정 직전의 덱에 값이 viv_i인 카드가 적어도 한 장 있음이 보장된다.

출력

q+1q+1개의 정수를 출력한다. j번째 정수는 덱의 처음 j-1번 수정 후에, 모든 카드를 비어 있지 않은 더미로 나누는 유효한 분배들 중 mex 합의 최댓값이다 (j=1,2,…,q+1j = 1, 2, \ldots, q+1).

힌트

예제 테스트에서 처음 덱에 대한 최적 분배 중 하나는 값 0과 2인 카드를 한 더미에, 값 0, 1, 2, 2, 4인 카드를 다른 더미에, 값 4인 카드를 세 번째 더미에 넣는 것이다. 이 분배의 mex 합은 mex⁡({0,2})+mex⁡({0,1,2,2,4})+mex⁡({4})=1+3+0=4\operatorname{mex}(\{0, 2\}) + \operatorname{mex}(\{0, 1, 2, 2, 4\}) + \operatorname{mex}(\{4\}) = 1 + 3 + 0 = 4이다.

예제1

  1. 예제 1

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