思路:前缀和+连续区间最大值(要懂得对问题进行转换)
#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
#define endl '\n'
#define rep(i,a,n) for (int i = a; i < n; i ++ )
#define repn(i,a,n) for (int i = a; i <= n; i ++ )
#define pb push_back
#define IOS ios::sync_with_stdio(false); cin.tie(0);cout.tie(0);
typedef long long ll;
typedef pair<int,int> PII;
ll gcd(ll a,ll b) { return b ? gcd(b,a % b) : a; }
const int mod = 1e9+7;
const int N = 200010;
ll a[N], b[N], c[N];
ll ans, sum;
int main()
{
IOS;
int n, k;
cin >> n >> k;
repn(i, 1, n)
{
cin >> a[i];
b[i] = a[i] + b[i - 1];
}
for (int i = 1; i <= k; i ++ ) sum += (i * a[i]);
ans = sum;
for (int i = k + 1; i <= n; i ++ )
{
sum -= (b[i - 1] - b[i - k - 1]);
sum += (k * a[i]);
ans = max(ans, sum);
}
cout << ans << endl;
return 0;
}