SOJ ONLINE JUDGE

문제 165

수열 편집과 구간 연산

내 상태
미제출
난이도
165번 문제 난이도 보기
Diamond III
출제자
rlatjwls7882
시간 제한
2000 ms
메모리 제한
1024 MB
165번 문제 태그 보기
스플레이 트리자료 구조

길이가 $N$인 정수 수열 $A_1, A_2, \cdots, A_N$이 주어진다. 다음 $Q$개의 명령을 순서대로 처리해 보자. 원소의 위치는 $1$부터 시작하며, 삽입·삭제·이동 후에는 바뀐 수열을 기준으로 위치를 매긴다.

  • $0\ p\ x$: $p$번째 원소 앞에 정수 $x$를 삽입한다. $p$가 수열의 길이보다 $1$ 크면 맨 뒤에 삽입한다.
  • $1\ p$: $p$번째 원소를 삭제한다.
  • $2\ l\ r\ x$: $A_l, A_{l+1}, \cdots, A_r$에 각각 $x$를 더한다.
  • $3\ l\ r\ x$: $A_l, A_{l+1}, \cdots, A_r$를 모두 $x$로 바꾼다.
  • $4\ l\ r$: $A_l, A_{l+1}, \cdots, A_r$의 순서를 뒤집는다.
  • $5\ l\ r\ k$: 구간 $[l, r]$을 오른쪽으로 $k$칸 순환 이동한다. $k<0$이면 왼쪽으로 $-k$칸 순환 이동한다.
  • $6\ l\ r$: $A_l + A_{l+1} + \cdots + A_r$을 구한다.
  • $7\ l\ r$: $A_l, A_{l+1}, \cdots, A_r$의 최솟값을 구한다.
  • $8\ l\ r$: $A_l, A_{l+1}, \cdots, A_r$의 최댓값을 구한다.
  • $9\ l\ r$: $A_l, A_{l+1}, \cdots, A_r$의 최솟값이 나타나는 가장 작은 위치를 구한다.
  • $10\ l\ r\ p$: 구간 $[l, r]$을 잘라 낸 뒤, 남은 수열의 $p$번째 원소 앞에 순서를 유지하여 삽입한다. $p$가 남은 수열의 길이보다 $1$ 크면 맨 뒤에 삽입한다.
  • $11\ p$: $p$번째 원소를 구한다.

입력

첫 번째 줄에 두 정수 $N$, $Q$가 공백으로 구분되어 주어진다. $(1 \le N, Q \le 200\,000)$

두 번째 줄에 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다. $(-10^6 \le A_i \le 10^6)$

세 번째 줄부터 $Q$개의 줄에 걸쳐 명령이 하나씩 주어진다. 각 명령의 정수는 공백으로 구분되어 주어진다.

$0$번, $2$번, $3$번 명령에는 정수 $x$가 주어진다. $(-10^6 \le x \le 10^6)$

$5$번 명령에는 정수 $k$가 주어진다. $(-10^9 \le k \le 10^9)$

각 명령에서 위치의 범위는 다음과 같다. $L$은 해당 명령을 처리하기 전 수열의 길이이다.

  • $0$번 명령에 정수 $p$가 주어진다. $(1 \le p \le L+1)$
  • $1$번, $11$번 명령에 정수 $p$가 주어진다. $(1 \le p \le L)$
  • $2$번부터 $9$번 명령에 두 정수 $l$, $r$이 공백으로 구분되어 주어진다. $(1 \le l \le r \le L)$
  • $10$번 명령에 세 정수 $l$, $r$, $p$가 공백으로 구분되어 주어진다. $(1 \le l \le r \le L; 1 \le p \le L-(r-l+1)+1)$

수열이 비어 있을 때는 $0$번 명령만 주어진다.

출력

$6$번, $7$번, $8$번, $9$번, $11$번 명령의 결과를 명령이 주어진 순서대로 한 줄에 하나씩 출력한다.

예제 입력 1

5 15
3 -1 4 -1 5
6 1 5
9 1 5
2 2 4 3
7 1 5
3 3 4 -2
8 1 5
4 1 5
11 1
5 1 5 -1
11 1
10 2 3 4
11 4
0 1 9
1 3
6 1 5

예제 출력 1

10
2
2
5
5
-2
-2
12

제출

편집기에서 나가려면 Esc를 누른 뒤 Tab 또는 Shift와 Tab을 누르세요.