Pagini recente » Cod sursa (job #666531) | Cod sursa (job #706954) | Cod sursa (job #1466666) | Cod sursa (job #1573866) | Cod sursa (job #331042)
Cod sursa(job #331042)
#include <stdio.h>
#define NMAX 10001
#define KMAX 1024
#define Inf 0x3f3f3f3f
#define max(a,b) (a)>(b) ? (a):(b)
int N,K,v[NMAX],a[2][KMAX],b[2][KMAX];
int main()
{
int i,j,now=1,prev=0;
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);
a[now][1]=v[1];
for (i=2;i<=K+1;++i) a[now][i]=-Inf;
for (i=1;i<=K+1;++i) b[now][i]=-Inf;
for (i=2;i<=N;++i)
{
now=i&1;prev=1-now;
for (j=1;j<=K+1 && j<=i;++j)
{
a[now][j]=max(max(a[prev][j]+v[i],a[prev][j-1]+v[i]),
b[prev][j-1]+v[i]);
b[now][j]=max(b[prev][j],a[prev][j]);
}
}
printf("%d",max(max(a[now][K],b[now][K]),max(a[now][K+1],0)));
return 0;
}