만드는 중입니다

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

배열

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

요약
a_i = i인 배열에서 구간 뒤집기와 구간 회전, 구간 최솟값/최댓값/합, 위치의 값, 값의 위치를 묻는 질의를 최대 300000개 처리하고 최종 배열을 출력한다.
난이도

어려움10점 중 9점

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

문제

범수와 상수 형제는 배열을 가지고 논다. 형제가 가진 배열은 크기가 NN인 A=[a1,…,aN]A = [a_1, \ldots, a_N]이고, 처음에는 모든 ii(1≤i≤N1 \le i \le N)에 대해 ai=ia_i = i이다. 형제는 질의 QQ개를 받아 주어진 순서대로 하나씩 처리한다. 질의는 다음 네 종류 중 하나이다.

1 l r (1≤l≤r≤N1 \le l \le r \le N): ala_l부터 ara_r까지의 최솟값, 최댓값, 합을 구한다. 그리고 ala_l부터 ara_r까지를 뒤집는다. 뒤집으면 배열은 다음과 같이 바뀐다.

[a1,…,al−1,ar,ar−1,…,al+1,al,ar+1,…,aN][a_1, \ldots, a_{l-1}, a_r, a_{r-1}, \ldots, a_{l+1}, a_l, a_{r+1}, \ldots, a_N]

2 l r x (1≤l≤r≤N1 \le l \le r \le N, −N<x<N-N < x < N): ala_l부터 ara_r까지의 최솟값, 최댓값, 합을 구한다. 그리고 ala_l부터 ara_r까지를 오른쪽으로 xx칸 회전한다. xx가 음수면 왼쪽으로 −x-x칸 회전한다. 0<x≤r−l0 < x \le r - l이면 배열은 다음과 같이 바뀐다.

[a1,…,al−1,ar−x+1,…,ar−1,ar,al,al+1,…,ar−x,ar+1,…,aN][a_1, \ldots, a_{l-1}, a_{r-x+1}, \ldots, a_{r-1}, a_r, a_l, a_{l+1}, \ldots, a_{r-x}, a_{r+1}, \ldots, a_N]

회전은 구간 [l,r][l, r] 안에서만 일어난다. 구간의 한쪽 끝에서 밀려난 값은 반대쪽 끝으로 들어온다. 구간의 길이를 m=r−l+1m = r - l + 1이라 하면 오른쪽으로 xx칸 회전하는 것은 오른쪽으로 x+mx + m칸 회전하는 것과 같으므로, xx가 음수이거나 ∣x∣≥m|x| \ge m이어도 결과는 하나로 정해진다.

3 i (1≤i≤N1 \le i \le N): aia_i가 어떤 수인지 구한다.

4 x (1≤x≤N1 \le x \le N): ai=xa_i = x인 ii가 어떤 수인지 구한다.

질의 하나를 처리해 배열이 바뀌면 그 결과는 다음 질의에 그대로 영향을 준다. 질의마다 구한 값을 출력하고, 질의를 모두 처리한 뒤 배열의 마지막 모습을 출력하라.

입력

첫 줄에 배열의 크기 NN과 질의의 개수 QQ가 공백으로 구분되어 주어진다. (1≤N≤3000001 \le N \le 300000, 1≤Q≤3000001 \le Q \le 300000)

다음 QQ개의 줄에 각 질의가 위 네 형식 중 하나로 주어진다.

출력

질의마다 한 줄씩, 구한 값을 공백으로 구분해 출력한다. 1번 질의와 2번 질의는 최솟값, 최댓값, 합을 이 순서로 출력한다. 3번 질의와 4번 질의는 구한 값 하나를 출력한다.

마지막 Q+1Q+1번째 줄에는 질의를 모두 처리한 뒤 배열의 값을 공백으로 구분해 한 줄에 출력한다.

힌트

첫 번째 예제에서 배열은 다음 순서로 바뀐다.

[1,2,3,4,5]→[1,4,3,2,5]→[1,4,5,3,2]→[5,1,4,3,2][1, 2, 3, 4, 5] \to [1, 4, 3, 2, 5] \to [1, 4, 5, 3, 2] \to [5, 1, 4, 3, 2]

예제2

  1. 예제 1

    입력
    5 5
    1 2 4
    3 4
    2 3 5 1
    2 1 3 -2
    4 3
    
    예상 출력
    2 4 9
    2
    2 5 10
    1 5 10
    4
    5 1 4 3 2
    
  2. 예제 2

    입력
    6 6
    1 2 5
    2 1 6 -1
    3 5
    4 1
    2 2 4 2
    1 1 3
    
    예상 출력
    2 5 14
    1 6 21
    6
    6
    2 4 9
    2 5 10
    2 3 5 4 6 1