만드는 중입니다

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

순열 사이클과 쿼리

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

요약
순열 A와 매우 큰 지수 m이 주어질 때, 두 원소를 교환하는 쿼리 뒤에 S^m(i)에 i를 곱한 합을 구합니다.
난이도

어려움10점 중 8점

유형
정수론, 배열, 구현
정답자
아직 제출이 없습니다

문제

1 이상 nn 이하의 서로 다른 정수 nn개로 이루어진 배열 AA와 정수 mm이 주어진다. S0(i)=iS^0(i)=i, Sk(i)=A[Sk−1(i)]S^k(i)=A[S^{k-1}(i)] (1≤k≤m1 \le k \le m, 1≤i≤n1 \le i \le n)로 정의한다. Sm(i)S^m(i)에 대한 qq개의 질의가 질의 목록 QQ에 저장되어 있다. 질의는 두 가지 유형이다.

  • 유형 1 1 i j: A[i]A[i]와 A[j]A[j]의 값을 교환한다.
  • 유형 2 2: Sm(1)×1+Sm(2)×2+⋯+Sm(n)×nS^m(1) \times 1 + S^m(2) \times 2 + \cdots + S^m(n) \times n을 출력한다.

QQ의 첫 번째 질의부터 qq번째 질의까지 순서대로 처리하면서 유형 2 질의의 결과를 출력한다.

입력

첫 번째 줄에 nn과 mm이 공백으로 구분되어 주어진다.

두 번째 줄에 배열 AA의 원소 A[1],A[2],…,A[n]A[1], A[2], \ldots, A[n]이 공백으로 구분되어 주어진다.

세 번째 줄에 질의의 수 qq가 주어진다.

네 번째 줄부터 qq개의 줄에 걸쳐 질의 목록 QQ의 질의가 순서대로 주어진다. 한 줄에 질의 하나를 나타내는 정수가 공백으로 구분되어 있다.

출력

유형 2 질의의 결과를 질의 순서대로 한 줄에 하나씩 출력한다.

제한

  • 1≤n,q≤100,0001 \le n, q \le 100{,}000
  • 1≤m≤101,000−11 \le m \le 10^{1{,}000}-1
  • 1≤A[i]≠A[j]≤n1 \le A[i] \ne A[j] \le n (1≤i≠j≤n1 \le i \ne j \le n)
  • QQ에 저장된 질의는 유형 1과 유형 2뿐이다.
  • QQ에 저장된 유형 2 질의는 1개 이상 min⁡(q,1,000)\min(q, 1{,}000)개 이하이다.

힌트

SmS^m은 배열 AA의 원소를 이동시키는 연산을 mm번 반복하는 동작이다. ii번째 원소에 이동 연산을 kk번(0≤k≤m0 \le k \le m) 수행한 후의 위치를 Sk(i)S^k(i)라고 하자. 초기 위치는 S0(i)=iS^0(i)=i이고, 1번 이동한 후의 위치는 S1(i)=A[i]S^1(i)=A[i]이며, mm번 이동한 후의 위치는 Sm(i)=A[Sm−1(i)]S^m(i)=A[S^{m-1}(i)]이다.

예를 들어 A={2,1,3}A=\{2, 1, 3\}이고 m=3m=3이라고 하자. 첫 번째 원소는 S0(1)=1S^0(1)=1, S1(1)=A[1]=2S^1(1)=A[1]=2, S2(1)=A[S1(1)]=1S^2(1)=A[S^1(1)]=1, S3(1)=A[S2(1)]=2S^3(1)=A[S^2(1)]=2로 이동한다. 두 번째 원소는 S0(2)=2S^0(2)=2, S1(2)=A[2]=1S^1(2)=A[2]=1, S2(2)=A[S1(2)]=2S^2(2)=A[S^1(2)]=2, S3(2)=A[S2(2)]=1S^3(2)=A[S^2(2)]=1로 이동한다. 세 번째 원소는 모든 kk에 대해 Sk(3)=3S^k(3)=3이다.

예제1

  1. 예제 1

    입력
    4 3
    1 2 3 4
    5
    2
    1 1 2
    2
    1 2 3
    2
    
    예상 출력
    30
    29
    30