Pagini recente » Cod sursa (job #2974938) | Cod sursa (job #434828) | Cod sursa (job #2355406) | Cod sursa (job #2976429) | Cod sursa (job #531503)
Cod sursa(job #531503)
#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;
}
}
int i=n;
int j=k+1;
while(!b[i][j]&&i){
a[n][j]+=v[i];
b[i][j]=1;
i--;
}
i=1;
while(!b[i][j]&&i<=n){
a[n][j]+=v[i];
b[i][j]=1;
i++;
}
max1=max(0,a[n][k]);
if(b[1][k+1]&&b[n][k+1])
max1=max(max1,a[n][k+1]);
fprintf(g,"%d",max1);
fclose(g);
fclose(f);
return 0;
}