AddK
시간 제한2초메모리 제한1024 MB
K개 위치를 왼쪽으로 순환 이동하는 갱신과 구간 안 길이 m인 모든 연속 부분수열의 합을 구하는 질의를 처리한다.
문제
정수 개로 이루어진 배열 와 정수 가 주어진다. 는 이다. 다음 두 종류의 질의 개를 처리해야 한다.
- : 를 왼쪽으로 순환 이동한다. 즉, 의 값은 각각 이 된다. 는 서로 다르며, 반드시 증가하는 순서일 필요는 없다.
- : 수열 에서 길이가 인 모든 연속 부분수열의 원소 합을 구한다. 여러 부분수열에 등장하는 원소는 등장한 횟수만큼 더한다.
입력
첫째 줄에 정수 과 가 주어진다. 둘째 줄에 배열 의 원소 개가 주어진다. 셋째 줄에 질의의 개수 가 주어지고, 이어서 개의 줄에 위에서 설명한 두 종류 중 하나의 질의가 주어진다.
출력
2번 질의의 답을 한 줄에 하나씩 출력한다.
제한
힌트
첫 번째 질의는 2번 질의이고, 수열 에서 길이가 인 모든 연속 부분수열의 원소 합을 구해야 한다. 부분수열은 , , 이고, 원소 합은 52이다.
두 번째 질의는 1번 질의이고, 배열 에서 인덱스 , , 에 있는 원소를 왼쪽으로 순환 이동해야 한다. 그러면 배열 는 가 된다.
세 번째 질의는 2번 질의이고, 수열 에서 길이가 인 모든 연속 부분수열의 원소 합을 구해야 한다. 부분수열은 , , , 이고, 원소 합은 이다.