n일부터 n+m일까지 일해서 받을 수 있는 돈의 합중에 가장 큰 값 => 누적합
long long day[MAX]; // 급여의 합
int num; // 해당 날짜에 받을 수 있는 급여
day[i] = day[i-1] + num; // 오늘day[i] 는 전날day[i-1] + 오늘급여 num
1 부터 m의 간격을 두고 누적합의 값 확인후 가장 큰 값을 구한다
#include<bits/stdc++.h>
using namespace std;
#define MAX 100'000 + 10
typedef long long ll;
ll day[MAX];
int n, m;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n >> m;
for (int i = 1; i <= n; i++) {
int num; cin >> num;
day[i] = day[i - 1] + num;
}
int i = 1, j = m;
ll sum = 0;
while (j <= n) {
sum = max(sum, day[j] - day[i - 1]);
i++;
j++;
}
cout << sum << '\n';
return 0;
}