만드는 중입니다

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

강습 2

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

요약
배열과 정수 k가 주어질 때 각 질의 구간 안에서 길이가 k인 연속 구간들을 겹치지 않게 골라 합의 최댓값을 구합니다.
난이도

어려움10점 중 9점

유형
동적 계획법, 분할 정복, 누적 합
정답자
아직 제출이 없습니다

문제

바이토시아가 비토시아를 다시 공격하려고 한다. 적진에 낙하하는 작전은 진정한 강골의 몫이라, 이번에는 바이토시아 최정예 특수부대 바이토그롬의 병사들이 투입된다.

바이토착 장군의 사열에 병사 nn명이 모였다. 병사들은 왼쪽에서 오른쪽으로 11번부터 nn번까지 번호가 붙은 한 줄로 섰다. 장군은 비토시아로 보낼 부대를 몇 개 고르려 한다. 각 부대는 연속된 위치를 차지하는 정확히 kk명의 병사로 이루어져야 한다. 병사는 최대 한 부대에만 속할 수 있다. 장군은 부대 개수에 제약이 없으며, 부대를 하나도 만들지 않고 공격을 잠시 미뤄도 된다.

각 병사의 능력은 정수 aia_i로 나타낸다. aia_i가 클수록 전투력이 높다. 음수일 수도 있는데, 이 경우 그 병사는 작전에 방해가 된다.

장군은 부대에 뽑힌 병사들의 aia_i 합을 최대로 만들고 싶다. 다만 앞쪽 몇 명은 인토시아 전선으로 보내야 하고, 뒤쪽 몇 명은 롱롱토시아에서 정보 임무를 맡아야 한다. 따라서 부대는 위치가 [li,ri][l_i, r_i] 구간에 속한 병사 중에서만 고를 수 있다. 각 시나리오에서 보낼 수 있는 aia_i 합의 최댓값을 구하라.

입력

첫 줄에 정수 nn, kk, qq가 주어진다 (1≤n,q≤3⋅1051 \le n, q \le 3 \cdot 10^5, 1≤k≤n1 \le k \le n). 각각 병사 수, 부대당 병사 수, 시나리오 수다.

둘째 줄에 nn개의 정수 a1,…,ana_1, \ldots, a_n이 주어진다 (−109≤ai≤109-10^9 \le a_i \le 10^9).

이어서 qq개의 줄에 정수 lil_i와 rir_i가 주어진다 (1≤li≤ri≤n1 \le l_i \le r_i \le n). ii번째 시나리오에서는 위치가 [li,ri][l_i, r_i] 구간에 속한 병사만 보낼 수 있다.

출력

qq개의 줄을 출력한다. ii번째 줄에는 ii번째 시나리오에서 비토시아로 보내는 병사들의 aia_i 합의 최댓값을 쓴다.

힌트

첫 번째와 다섯 번째 시나리오에서는 위치 [1,2,3][1, 2, 3]과 [5,6,7][5, 6, 7]의 병사로 부대 두 개를 만드는 것이 최적이다. 두 번째와 여섯 번째 시나리오에서는 위치 [3,4,5][3, 4, 5]의 병사로 부대 하나만 만드는 것이 최적이다. 세 번째와 네 번째 시나리오에서 장군은 부대를 만들지 않고 작전을 차분히 다시 검토한다. 일곱 번째 시나리오에서는 위치 [1,2,3][1, 2, 3]과 [4,5,6][4, 5, 6]의 병사로 부대 두 개를 만든다.

예제1

  1. 예제 1

    입력
    8 3 7
    3 -1 10 0 10 -1 1 -1
    1 8
    3 5
    6 8
    1 2
    1 7
    2 8
    1 6
    
    예상 출력
    22
    20
    0
    0
    22
    20
    21