아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

순열

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

요약
수열 a와 m번의 점 갱신 각각에 대해 모든 i에서 p_i <= a_i인 순열 p가 존재하는지 판정한다.
난이도

어려움10점 중 8점

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

문제

양의 정수로 이루어진 수열 a1,a2,…,ana_1, a_2, \ldots, a_n이 주어진다. 11번 자리부터 nn번 자리까지에 11부터 nn까지의 수를 한 번씩 배치하되, ii번째 자리에 놓는 수는 aia_i를 넘을 수 없다. 즉, 모든 1≤i≤n1 \le i \le n에 대해 pi≤aip_i \le a_i를 만족하는, 11부터 nn까지의 순열 pp가 존재하는지 판별한다.

처음 주어진 수열에 대해, 그리고 수열을 한 번씩 수정할 때마다, 그러한 순열을 만들 수 있는지 없는지를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 수열의 크기 nn (1≤n≤200,0001 \le n \le 200{,}000)이 주어진다. 둘째 줄에는 a1,a2,…,ana_1, a_2, \ldots, a_n이 공백으로 구분되어 주어진다. 셋째 줄에는 수정 횟수 mm (0≤m≤500,0000 \le m \le 500{,}000)이 주어진다. 이어지는 mm개의 줄에는 각 수정이 한 줄에 하나씩, 두 정수 jij_i와 wiw_i (1≤ji,wi≤n1 \le j_i, w_i \le n)로 주어진다. 이는 jij_i번째 원소를 wiw_i로 바꾼다는 의미이다. 수정은 누적되어 적용된다. 즉, ii번째 수정은 앞선 i−1i-1번의 수정이 모두 반영된 수열에 대해 이루어진다.

출력

총 m+1m+1개의 줄을 출력한다. 각 줄에는 조건을 만족하는 순열을 만들 수 있으면 TAK을, 만들 수 없으면 NIE를 출력한다.

첫째 줄은 처음 주어진 수열에 대한 결과이고, 다음 mm개의 줄은 각각 11번째부터 mm번째 수정이 적용된 직후의 결과이다.

힌트

예제에서, 처음 주어진 수열로는 순열 2,4,3,1,52, 4, 3, 1, 5를 만들 수 있다. 첫 번째 수정 이후 수열은 3,4,3,2,43, 4, 3, 2, 4가 되며, 이 수열로는 어떤 순열도 만들 수 없다. 두 번째 수정 이후 수열은 5,4,3,2,45, 4, 3, 2, 4가 되며, 예를 들어 순열 5,1,3,2,45, 1, 3, 2, 4를 만들 수 있다.

예제1

  1. 예제 1

    입력
    5
    3 4 3 2 5
    2
    5 4
    1 5
    
    예상 출력
    TAK
    NIE
    TAK