아이템 2

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

요약
가치가 있는 N개의 아이템이 놓인 직선 위에 길이 K인 구간을 원하는 만큼 놓아, 덮은 아이템 가치 합의 최댓값을 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 슬라이딩 윈도우, 누적 합
정답자
아직 제출이 없습니다

문제

좌우로 무한히 긴 수직선 위에 NN개의 아이템이 떨어져 있다. ii번째 아이템의 위치는 ii이며, A_iA\_i의 가치를 가지고 있다.

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

주원이가 주운 아이템 가치의 합으로 가능한 값 중 최댓값을 찾아보자. 집게를 한 번도 사용하지 않을 수도 있으며, 이때 주운 아이템의 총 가치는 0임에 유의하라.

입력

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

둘째 줄에 아이템의 가치 A_1,A_2,⋯ ,A_NA\_1,A\_2,\cdots ,A\_N이 차례대로 공백으로 구분되어 주어진다.

출력

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

제한

  • 1≤K≤N≤500,0001\leq K\leq N\leq 500\\, 000
  • −500,000≤A_i≤500,000-500\\, 000\leq A\_i\leq 500\\, 000 (1≤i≤N)(1\leq i\leq 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