Cod sursa(job #531495)

Utilizator Robert29FMI Tilica Robert Robert29 Data 9 februarie 2011 19:59:16
Problema Ferma Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#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){
				int x=i;
				while(!b[i][j]){
					a[i][j]+=v[i];
					b[i][j]=1;
					i--;
				}
				i=x;
			}
		}
		
	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;
}