/** I am Back **/
#include “bits/stdc++.h”
using namespace std;
#define LL long long
#define MX 2000006
#define FOR(i,n) for(int i=0; i<n; i++)
int n,k;
LL ar[MX];
LL dp[MX];
int main() {
cin>>n>>k;
FOR(i,n)cin>>ar[i];
memset(dp,0,sizeof(dp));
LL mx1 = 0 , mx2 = 0 , ind = 0 , left = 0 , right = k-1;
LL ans = 0;
for(int j=left; j<=right; j++){
if(ar[j]>=0)dp[j]=ar[j];
if(ar[j]>=mx1){
mx2 = mx1;
mx1 = ar[j];
ind = j;
}
ans = max(ans, dp[j]);
}
left +=k;
right += k;
for(int i = 2; i<=ceil(n/k); i++){
for(int j=left; j<=min((LL)n-1 , right); j++){
if(ar[j] >= 0){
if( abs(j - ind) %k ){
dp[j] = ar[j] + mx1;
}
else{
dp[j] = ar[j] + mx2;
}
ans = max(ans, dp[j]);
}
}
for(int j=left; j<=right; j++){
if(dp[j]>=mx1){
mx2 = mx1;
mx1 = dp[j];
ind = j;
}
}
left+=k;
right+=k;
}
// FOR(i,n)cout<<dp[i]<<" ";
// cout<<endl;
cout<<ans<<endl;
return 0;
}
Any case for getting wa?