만드는 중입니다

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

점프 게임

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

요약
Q번의 구간 증가 연산으로 만든 N개 발판의 값을 바탕으로, 점프하는 위치의 간격이 K 이상이 되도록 골라 합이 최대가 되는 값을 구합니다.
난이도

보통10점 중 7점

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

문제

KOI 사가 출시한 점프 게임은 일렬로 늘어선 NN개의 발판을 여러 번의 점프로 통과하는 게임이다. 수직선 위에 NN개의 발판이 있고, 왼쪽에서 오른쪽으로 0,1,…,N−10, 1, \dots, N-1번 번호가 매겨져 있다. 처음에 주인공은 가장 왼쪽의 0번 발판에 있으며, 점수는 0점이다.

모든 0≤i≤N−10 \le i \le N-1에 대해, 주인공은 ii번 발판에서 걷기 또는 점프 중 하나를 선택한다. 걷기를 고르면 i+1i+1번 발판으로 이동하며 점수는 그대로다. 점프를 고르면 i+Ki+K번 발판으로 이동하며 점수가 A[i]A[i]만큼 증가한다. 여기서 KK는 미리 정해진 수이다. 주인공이 N−1N-1번 발판의 오른쪽으로 나아가면 게임이 성공적으로 끝난다. N,N+1,…N, N+1, \dots번 발판은 실제로 존재하지 않지만, 이 번호에 도달하면 N−1N-1번 발판의 오른쪽에 도달한 것으로 처리한다. 게임의 목표는 주인공을 적절히 조종해 점수를 최대로 만들고 게임을 끝내는 것이다.

KOI 사의 개발자들은 이 많은 발판을 일일이 설계할 수 없어서 단순한 방법으로 발판을 구성했다. 먼저 모든 A[i]A[i]를 0으로 설정한 뒤, QQ번의 연산을 수행한다. 각 jj(0≤j≤Q−10 \le j \le Q-1)에 대해 구간 0≤L[j]≤R[j]≤N−10 \le L[j] \le R[j] \le N-1을 고르고, A[L[j]],A[L[j]+1],…,A[R[j]]A[L[j]], A[L[j]+1], \dots, A[R[j]]를 각각 1씩 증가시킨다. 모든 연산을 마친 배열 AA가 각 발판에서 점프했을 때 얻는 점수이다.

당신은 KOI 사의 점프 게임을 최대 점수로 끝내는 방법을 설명하는 컴퓨터 과학 영상을 만들고 있다. 발판은 101210^{12}개에 이를 수 있으므로 효율적인 알고리즘이 필요하다.

제한

  • 1≤N≤10121 \le N \le 10^{12}
  • 1≤Q≤250 0001 \le Q \le 250\,000
  • 1≤K≤N1 \le K \le N
  • 모든 0≤j≤Q−10 \le j \le Q-1에 대해 0≤L[j]≤R[j]≤N−10 \le L[j] \le R[j] \le N-1

예제1

  1. 예제 1

    입력
    1 1 1
    0 0
    
    예상 출력
    1