Calvins Game Problem Code: INOI1301 Codechef Solution

#include <bits/stdc++.h>
using namespace std;
int main() {  
  ios::sync_with_stdio(0);
  cin.tie(NULL);
  int n,k;
  cin>>n>>k;
  int a[(int)1e6+2],f[(int)1e6+2],b[(int)1e6+2];
  for(int i=0;i<n;i++)
      cin>>a[i];
  f[k-1]=0;
  f[k]=a[k];
  for(int i=k+1;i<n;i++){
      f[i]=a[i]+max(f[i-1],f[i-2]);
  }
  b[0]=0;
  b[1]=a[0];
  int mx=-(2e9);
  for(int i=2;i<n;i++){
      b[i]=max(b[i-1]+a[i-1],b[i-2]+a[i-2]);
      if(i>=k-1&&b[i]+f[i]>mx)mx=b[i]+f[i];
  }
  cout<<mx;
}

Comments