살구 씨앗
시간 제한3초메모리 제한2048 MB
쿼리마다 s번째부터 e번째까지의 씨앗을 m번 버블 정렬한 뒤, l번째부터 r번째 위치의 크기 합을 구합니다.
문제
Sam은 살구 씨앗 여러 개를 가지고 있고, 크기 순으로 비내림차순이 되도록 정렬하려고 한다. 그는 다음 방법을 사용한다.
개의 씨앗에 대해 Sam은 총 단계를 수행한다. 부터 까지 각 단계 에서 다음을 수행한다.
- 첫 번째 씨앗과 두 번째 씨앗을 비교한다. 두 번째 씨앗이 더 작으면 자리를 바꾼다.
- 두 번째 씨앗과 세 번째 씨앗을 비교한다. 세 번째 씨앗이 더 작으면 자리를 바꾼다.
- 이 과정을 번째 씨앗과 번째 씨앗의 비교까지 이어 가며, 번째 씨앗이 더 작으면 자리를 바꾼다.
Tom은 이것이 유명한 버블 정렬이라는 것을 알아본다. Sam에게 이 방법이 얼마나 비효율적인지 보여 주려고, Tom은 개의 질문을 한다. 각 질문은 튜플로 표현된다. 주어진 개의 씨앗 수열에 대해, 질문은 초기 수열의 번째부터 번째까지의 부분 수열에 Sam의 방법을 처음 단계 적용한 뒤, 그 (부분적으로) 정렬된 부분 수열의 번째부터 번째 씨앗 크기의 합을 묻는다.
예를 들어 씨앗 크기가 인 4개의 씨앗과 질문 , 가 있다고 하자. 첫 번째 질문에서 2번째부터 4번째까지의 부분 수열은 이다. 1단계 후에는 가 된다. 2번째부터 2번째까지의 합은 이다. 두 번째 질문에서 부분 수열은 이다. 2단계 후에는 가 된다. 3번째부터 4번째까지의 합은 이다.
개의 씨앗과 개의 질문이 주어졌을 때, 각 질문의 답을 구하라.
입력
첫 줄에 두 정수 과 가 주어진다 (, ). 둘째 줄에는 초기 순서대로 씨앗 크기 개가 공백으로 구분되어 주어진다. 각 크기는 이상 이하이다. 이어지는 개의 줄에는 질문 하나씩이 양의 정수 다섯 개 , , , , 로 공백을 두고 주어진다. 제약은 , , 이다.
출력
각 질문에 대해 한 줄에 답을 출력한다. 답은 번째부터 번째까지의 부분 수열에 Sam의 방법을 처음 단계 적용한 뒤, 번째부터 번째까지 씨앗 크기의 합이다.