만드는 중입니다

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

수열과 쿼리 33

시간 제한5초메모리 제한512 MB

요약
배열의 구간 (l, r, k)마다 A[l..r]에서 겹치지 않는 비어 있지 않은 부분배열 k개의 합이 최대가 되는 값을 구합니다.
난이도

어려움10점 중 8점

유형
동적 계획법, 세그먼트 트리, 분할 정복
정답자
아직 제출이 없습니다

문제

길이가 NN인 수열 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오.

  • l r k: 부분 수열 Al,Al+1,…,ArA_l, A_{l+1}, \ldots, A_r에서 kk개의 부분 수열을 골라, 고른 부분 수열의 원소 합의 최댓값을 출력하라. 고른 부분 수열은 각각 비어 있지 않아야 하며, 서로 겹쳐서는 안 된다.

입력

첫째 줄에 수열의 크기 NN과 쿼리의 개수 MM이 주어진다. (1≤N,M≤350001 \le N, M \le 35000)

둘째 줄에는 A1,A2,…,ANA_1, A_2, \ldots, A_N이 주어진다. (−35000≤Ai<35000-35000 \le A_i < 35000)

셋째 줄부터 MM개의 줄에 쿼리가 한 줄에 하나씩 주어진다. (1≤l≤r≤N1 \le l \le r \le N, 1≤k≤r−l+11 \le k \le r - l + 1)

출력

쿼리의 결과를 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

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

    입력
    5 1
    7 7 7 7 7
    1 5 1
    
    예상 출력
    35