Pagini recente » Cod sursa (job #2137268) | Cod sursa (job #1383790) | Cod sursa (job #326544) | Cod sursa (job #1963933) | Cod sursa (job #1775025)
#include<cstdio>
#include<algorithm>
using namespace std;
int v[10005],i,j,n,m,k,l,sp[10005],a[1005][10005];
int main ()
{
freopen("ferma.in","r",stdin);
freopen("ferma.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i]);
sp[i]=sp[i-1]+v[i];
}
for(i=1;i<=k;i++)
a[i][0]=-2000000000;
a[1][1]=v[1];
for(i=1;i<=k;i++)
{
int best=a[i-1][0];
for(j=1+(i==1);j<=n;j++)
{
a[i][j]=max(a[i][j-1],best)+v[j];
best=max(best,a[i-1][j]);
}
}
int maxim=0;
for(i=1;i<=n;i++)
maxim=max(maxim,a[k][i]);
for(i=1;i<=n;i++)
a[0][i]=-2000000000;
for(i=1;i<=k;i++)
{
int best=a[i-1][0];
for(j=1+(i==1);j<=n;j++)
{
a[i][j]=max(a[i][j-1],best)+v[j];
best=max(best,a[i-1][j]);
}
}
for(i=1;i<=n;i++)
a[k][i]=max(a[k][i-1],a[k][i]);
for(i=1;i<=n;i++)
maxim=max(maxim,a[k][i]+sp[n]-sp[i]);
printf("%d",maxim);
return 0;
}