만드는 중입니다

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

살구 씨앗

시간 제한3초메모리 제한2048 MB

요약
쿼리마다 s번째부터 e번째까지의 씨앗을 m번 버블 정렬한 뒤, l번째부터 r번째 위치의 크기 합을 구합니다.
난이도

어려움10점 중 9점

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

문제

Sam은 살구 씨앗 여러 개를 가지고 있고, 크기 순으로 비내림차순이 되도록 정렬하려고 한다. 그는 다음 방법을 사용한다.

nn개의 씨앗에 대해 Sam은 총 n−1n - 1단계를 수행한다. 11부터 n−1n - 1까지 각 단계 kk에서 다음을 수행한다.

  • 첫 번째 씨앗과 두 번째 씨앗을 비교한다. 두 번째 씨앗이 더 작으면 자리를 바꾼다.
  • 두 번째 씨앗과 세 번째 씨앗을 비교한다. 세 번째 씨앗이 더 작으면 자리를 바꾼다.
  • 이 과정을 (n−k)(n - k)번째 씨앗과 (n−k+1)(n - k + 1)번째 씨앗의 비교까지 이어 가며, (n−k+1)(n - k + 1)번째 씨앗이 더 작으면 자리를 바꾼다.

Tom은 이것이 유명한 버블 정렬이라는 것을 알아본다. Sam에게 이 방법이 얼마나 비효율적인지 보여 주려고, Tom은 qq개의 질문을 한다. 각 질문은 (s,e,m,l,r)(s, e, m, l, r) 튜플로 표현된다. 주어진 nn개의 씨앗 수열에 대해, 질문은 초기 수열의 ss번째부터 ee번째까지의 부분 수열에 Sam의 방법을 처음 mm단계 적용한 뒤, 그 (부분적으로) 정렬된 부분 수열의 ll번째부터 rr번째 씨앗 크기의 합을 묻는다.

예를 들어 씨앗 크기가 (1,3,4,2)(1,3,4,2)인 4개의 씨앗과 질문 (2,4,1,2,2)(2,4,1,2,2), (1,4,2,3,4)(1,4,2,3,4)가 있다고 하자. 첫 번째 질문에서 2번째부터 4번째까지의 부분 수열은 (3,4,2)(3,4,2)이다. 1단계 후에는 (3,2,4)(3,2,4)가 된다. 2번째부터 2번째까지의 합은 22이다. 두 번째 질문에서 부분 수열은 (1,3,4,2)(1,3,4,2)이다. 2단계 후에는 (1,2,3,4)(1,2,3,4)가 된다. 3번째부터 4번째까지의 합은 3+4=73 + 4 = 7이다.

nn개의 씨앗과 qq개의 질문이 주어졌을 때, 각 질문의 답을 구하라.

입력

첫 줄에 두 정수 nn과 qq가 주어진다 (2≤n≤1062 \le n \le 10^6, 1≤q≤5×1051 \le q \le 5 \times 10^5). 둘째 줄에는 초기 순서대로 씨앗 크기 nn개가 공백으로 구분되어 주어진다. 각 크기는 11 이상 10910^9 이하이다. 이어지는 qq개의 줄에는 질문 하나씩이 양의 정수 다섯 개 ss, ee, mm, ll, rr로 공백을 두고 주어진다. 제약은 1≤s<e≤n1 \le s < e \le n, 1≤m≤e−s1 \le m \le e - s, 1≤l≤r≤e−s+11 \le l \le r \le e - s + 1이다.

출력

각 질문에 대해 한 줄에 답을 출력한다. 답은 ss번째부터 ee번째까지의 부분 수열에 Sam의 방법을 처음 mm단계 적용한 뒤, ll번째부터 rr번째까지 씨앗 크기의 합이다.

예제3

  1. 예제 1

    입력
    4 2
    1 3 4 2
    2 4 1 2 2
    1 4 2 3 4
    
    예상 출력
    2
    7
    
  2. 예제 2

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

    입력
    6 2
    5 4 5 1 1 4
    3 6 1 1 3
    1 6 1 1 4
    
    예상 출력
    6
    11