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

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

허용된 교환

시간 제한6초메모리 제한512 MB

요약
배열에 교환과 합집합 연산이 가해질 때 정렬 가능 여부를 판정하고, 합치면 두 구름이 모두 좋아지는 구름 쌍의 개수를 센다.
난이도

어려움10점 중 9점

유형
유니온 파인드, 구현, 수학, 정렬
정답자
아직 제출이 없습니다

문제

도미니크는 양의 정수로 이루어진 배열 p1,…,pNp_1, \dots, p_N을 생각했다. 이 배열을 오름차순으로 정렬한 결과를 q1,…,qNq_1, \dots, q_N이라고 한다.

도미니크는 허용된 교환의 집합도 함께 생각했다. 쌍 (X,Y)(X, Y)가 허용된 교환의 집합에 들어 있으면, 도미니크는 배열 pp의 위치 XX와 위치 YY에 있는 수를 교환할 수 있다. 처음에 허용된 교환의 집합은 비어 있다.

마린은 도미니크에게 QQ개의 질의를 준다. 각 질의는 다음 네 종류 중 하나다.

  1. 위치 AA와 위치 BB의 수를 교환한다.

  2. 쌍 (A,B)(A, B)를 허용된 교환의 집합에 추가한다. 마린은 이미 집합에 들어 있는 쌍을 다시 줄 수도 있다.

  3. 허용된 교환만 써서 배열을 정렬할 수 있는지 판정한다. 교환은 임의의 순서로 쓸 수 있고, 같은 교환을 몇 번이든 다시 써도 된다.

  4. 위치 AA에 있는 수를 허용된 교환만 써서 위치 BB로 옮길 수 있으면 두 위치 (A,B)(A, B)가 연결되어 있다고 한다. 위치 AA와 연결된 모든 위치의 집합을 AA의 구름이라고 한다. 어떤 구름에 속한 모든 위치 jj에 대해 pj=qjp_j = q_j가 동시에 성립하도록 허용된 교환을 적용할 수 있으면, 그 구름을 좋은 구름이라고 한다.

    다음 세 조건을 모두 만족하는 서로 다른 두 위치의 쌍 (A,B)(A, B)가 몇 개인지 센다.

    • 위치 AA와 위치 BB는 연결되어 있지 않다.
    • AA의 구름과 BB의 구름이 모두 좋은 구름이 아니다.
    • 쌍 (A,B)(A, B)를 허용된 교환의 집합에 추가하면, AA의 구름과 BB의 구름이 합쳐져서 생기는 AA의 구름이 좋은 구름이 된다.

쌍 (A,B)(A, B)와 (B,A)(B, A)는 같은 쌍으로 센다.

입력

첫째 줄에 정수 NN과 QQ가 주어진다 (1≤N,Q≤1061 \le N, Q \le 10^6).

둘째 줄에 NN개의 정수 p1,…,pNp_1, \dots, p_N이 주어진다 (1≤pi≤1061 \le p_i \le 10^6).

다음 QQ개의 줄에 질의가 한 줄에 하나씩 주어진다.

  • 줄의 첫 번째 수는 질의의 종류 TT이고, 1, 2, 3, 4 중 하나다.
  • TT가 1 또는 2이면 그 뒤에 서로 다른 정수 AA와 BB가 온다 (1≤A,B≤N1 \le A, B \le N).
  • TT가 3 또는 4이면 그 줄에는 다른 수가 없다.

출력

종류가 3 또는 4인 질의마다 답을 한 줄에 출력한다.

종류 3의 답은 배열을 정렬할 수 있으면 DA, 정렬할 수 없으면 NE이다. 크로아티아어로 각각 예와 아니오를 뜻하며, 따옴표 없이 출력한다.

종류 4의 답은 문제에서 정의한, 음이 아닌 정수 하나다.

힌트

첫 번째 예제에서 p=[1,3,2]p = [1, 3, 2]이고 q=[1,2,3]q = [1, 2, 3]이다. 처음에는 허용된 교환이 하나도 없으므로 각 위치가 자기 자신만으로 이루어진 구름을 이룬다.

첫 번째 질의의 답은 1이다. 세 조건을 모두 만족하는 쌍은 (2,3)(2, 3) 하나뿐이다.

두 번째 질의의 답은 NE이다. 허용된 교환의 집합이 비어 있어서 2와 3을 제자리로 옮길 수 없다.

세 번째 질의로 쌍 (2,3)(2, 3)이 허용된 교환의 집합에 들어간다.

네 번째 질의의 답은 0이다. 위치 2와 위치 3이 이미 연결되어 있다.

다섯 번째 질의의 답은 DA이다. 허용된 교환 (2,3)(2, 3)을 한 번 적용하면 배열이 정렬된다.

예제3

  1. 예제 1

    입력
    3 5
    1 3 2
    4
    3
    2 2 3
    4
    3
    
    예상 출력
    1
    NE
    0
    DA
    
  2. 예제 2

    입력
    5 5
    4 2 1 4 4
    3
    4
    1 1 3
    3
    4
    
    예상 출력
    NE
    1
    DA
    0
    
  3. 예제 3

    입력
    4 10
    2 1 4 3
    3
    4
    1 1 2
    3
    4
    2 2 3
    2 1 2
    4
    2 3 4
    3
    
    예상 출력
    NE
    2
    NE
    1
    3
    DA