Pagini recente » Cod sursa (job #2108189) | Cod sursa (job #793056) | Cod sursa (job #1464558) | Cod sursa (job #130045) | Cod sursa (job #531491)
Cod sursa(job #531491)
#include<stdio.h>
FILE*f=fopen("ferma.in","r");
FILE*g=fopen("ferma.out","w");
int max(int a,int b){
if(a>b)
return a;
else
return b;
}
int n,k,a[10001][1002],max1,v[10001];
char b[10001][1002];
int main(){
fscanf(f,"%d%d",&n,&k);
for(int i=1;i<=n;++i)
fscanf(f,"%d",&v[i]);
for(int i=1;i<=n;i++)
for(int j=1;j<=k+1;j++){
a[i][j]=a[i-1][j];
if(b[i-1][j])
if(a[i][j]<a[i-1][j]+v[i]){
a[i][j]=a[i-1][j]+v[i];
b[i][j]=1;
}
if(!b[i-1][j-1])
if(a[i][j]<a[i-1][j-1]+v[i]){
a[i][j]=a[i-1][j-1]+v[i];
b[i][j]=1;
}
if(j==k+1&&v[i]<=0){
a[i][j]+=v[i];
b[i][j]=1;
}
}
max1=max(0,a[n][k]);
if(b[1][1]&&b[n][k+1])
max1=max(max1,a[n][k+1]);
fprintf(g,"%d",max1);
fclose(g);
fclose(f);
return 0;
}