Maximum Sum K partition Problem

/** 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?