만드는 중입니다

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

정렬하기

시간 제한2초메모리 제한1024 MB

요약
순열 A의 구간을 오름차순이나 내림차순으로 정렬하거나 구간 합을 구하는 쿼리를 처리하고, 마지막 배열을 출력합니다.
난이도

보통10점 중 6점

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

문제

길이 NN의 수열 AA가 주어진다. AA에는 11부터 NN까지의 정수가 한 번씩 등장한다. 이 수열에 다음 쿼리를 QQ번 수행한다.

  • 11 ll rr: Al,⋯ ,ArA_l, \cdots, A_r을 오름차순으로 정렬한다.
  • 22 ll rr: Al,⋯ ,ArA_l, \cdots, A_r을 내림차순으로 정렬한다.
  • 33 ll rr: Al+⋯+ArA_l + \cdots + A_r의 합을 구한다.

모든 쿼리를 수행한 후 AA의 최종 상태를 출력한다.

입력

첫 번째 줄에 NN과 QQ가 공백으로 구분되어 주어진다.

두 번째 줄에 NN개의 수 A1,⋯ ,ANA_1, \cdots, A_N이 공백으로 구분되어 주어진다.

이후 QQ개의 줄에 쿼리 정보 k,l,rk, l, r이 공백으로 구분되어 주어진다. k=1k=1이면 첫 번째 쿼리, k=2k=2이면 두 번째 쿼리, k=3k=3이면 세 번째 쿼리이다.

출력

세 번째 쿼리가 주어질 때마다 Al+⋯+ArA_l + \cdots + A_r의 값을 한 줄에 하나씩 출력한다.

다음 줄에 NN개의 수를 공백으로 구분하여 출력한다. ii번째 수는 모든 쿼리를 수행한 후의 AiA_i 값이다.

제한

  • 2≤N≤100 0002 \le N \le 100\,000
  • 1≤Q≤100 0001 \le Q \le 100\,000
  • 1≤k≤31 \le k \le 3
  • 1≤l≤r≤N1 \le l \le r \le N

예제1

  1. 예제 1

    입력
    6 6
    1 6 2 5 3 4
    3 4 6
    1 1 4
    3 2 5
    2 3 6
    3 1 5
    1 2 4
    
    예상 출력
    12
    16
    18
    1 2 5 6 4 3