별 특징 없는 구간 합 문제다.
v[i]: arr[i - k + 1] ~ arr[i] 사이의 합
으로 두고 풀었다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
int n, k;
cin >> n >> k;
vector<int> arr(n);
vector<int> v(n);
for (int i = 0; i < n; i++)
cin >> arr[i];
for (int i = 0; i < k; i++)
v[k - 1] += arr[i];
for (int i = k; i < n; i++)
v[i] = v[i - 1] - arr[i - k] + arr[i];
int maxi = -2e9;
for (int i = k - 1; i < n; i++)
maxi = max(maxi, v[i]);
cout << maxi;
return 0;
}
2년 전에 실패한 문제.. 실패해놓고 다시 안 푼 것도 나같다;