만드는 중입니다

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

아이템 2

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

요약
N개의 값과 집게 길이 K가 주어질 때 집을 수 있는 값의 최대 합을 구합니다. 가운데에서 집히는 연속 구간은 길이가 K 이상이어야 하며, 양 끝에 닿은 구간은 예외입니다.
난이도

보통10점 중 5점

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

문제

좌우로 무한히 긴 수직선 위에 NN개의 아이템이 떨어져 있다. ii번째 아이템은 위치 ii에 있으며, 가치는 AiA_i이다.

주원이에게는 길이가 KK인 집게가 있다. 주원이가 정수 좌표 xx(−109≤x≤109-10^9 \le x \le 10^9)를 지정하면, 집게는 xx부터 x+K−1x+K-1까지의 범위에 있는 아이템을 모두 줍는다. 주운 아이템은 그 자리에서 사라지며, 다시 내려놓을 수 없다. 주원이는 집게를 원하는 만큼 사용해 주운 아이템 가치의 합을 최대로 만들고자 한다.

주원이가 주운 아이템 가치의 합으로 가능한 값 중 최댓값을 구하여라. 집게를 한 번도 쓰지 않을 수도 있으며, 이때 주운 아이템의 총 가치는 0이다.

입력

첫째 줄에 아이템의 개수 NN과 집게의 길이 KK가 주어진다.

둘째 줄에 아이템의 가치 A1,A2,⋯ ,ANA_1, A_2, \cdots, A_N이 차례대로 공백으로 구분되어 주어진다.

출력

주운 아이템 가치의 합으로 가능한 값 중 최댓값을 출력한다.

제한

  • 1≤K≤N≤500 0001 \le K \le N \le 500\,000
  • −500 000≤Ai≤500 000-500\,000 \le A_i \le 500\,000 (1≤i≤N)(1 \le i \le N)
  • 입력으로 주어지는 수는 모두 정수이다.

힌트

정답이 32비트 정수 범위를 벗어날 수 있으므로, C/C++에서는 long long 타입을, Java에서는 long 타입을 사용하는 것을 권장한다.

예제2

  1. 예제 1

    입력
    9 3
    -2 3 -1 5 4 0 -10 5 -5
    
    예상 출력
    11
    
  2. 예제 2

    입력
    5 5
    1 -10 -10 -10 1
    
    예상 출력
    2