➤ Problem Link : 467C. George and Job
✅ C++ Solution :
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
int main()
{
int n,m,k;
cin>>n>>m>>k;
ll dp[n+1][k+1];
for(int i=0;i<=n;i++)
{
for(int j=1;j<=k;j++)
dp[i][j]=-1;
}
for(int i=0;i<=n;i++)
dp[i][0]=0;
ll arr[n+1];
for(int i=1;i<=n;i++)
cin>>arr[i];
ll cum[n+1];
cum[1]=arr[1];
for(int i=2;i<=n;i++)
cum[i]=arr[i]+cum[i-1];
cum[0]=0;
for(int i=1;i<=n;i++)
{
if(i>=m)
dp[i][1]=max(dp[i-1][1],cum[i]-cum[i-m]);
}
for(int i=2;i<=n;i++)
{
for(int j=2;j<=k;j++)
{
if(i>=m && dp[i-m][j-1]!=-1)
dp[i][j]=max(dp[i-1][j],cum[i]-cum[i-m]+dp[i-m][j-1]);
}
}
/*
for(int i=0;i<=n;i++)
{
for(int j=0;j<=k;j++)
cout<<dp[i][j]<<" ";
cout<<endl;
}*/
cout<<dp[n][k];
}
Thank you for your patience reading. If you enjoyed this post, I’d be very grateful if you’d help it spread by emailing it to a friend, or sharing it on Whatsapp or Facebook.
😇Happy Learning!!
