Cod sursa(job #405458)

Utilizator mihaipopa12Popa Mihai mihaipopa12 Data 28 februarie 2010 01:14:52
Problema Tablete Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<stdio.h>
FILE*f=fopen("minim.in","r");
FILE*g=fopen("minim.out","w");
int s[3][1001];
int v[1001],min,u,p,i,n,aux;
int main () {
	fscanf(f,"%d",&n);
	aux=n;
	for(i=1;i<=n;i++){
		fscanf(f,"%d",&v[i]);
	}
	s[1][1]=s[2][1]=1;
	min=10002;
	s[0][1]=v[1];
	while(aux!=0){
		for(i=1;i<=n;i++){
			s[1][i]=s[0][i]=s[2][i]=0;
		}
		for(i=1;i<=n;i++)
			if(v[i]!=10001){
				s[1][1]=s[2][1]=i;
			}
		for(i=1;i<=n;i++){
			if(v[i]!=10001){
				if(v[i]<=s[0][i-1]+v[i]){
					s[0][i]=v[i];
					s[1][i]=s[2][i]=i;
				}
				else{
					s[0][i]=s[0][i-1]+v[i];
					s[1][i]=s[1][i-1];
					s[2][i]=s[2][i-1]+1;
				}
			}
		}
		for(i=1;i<=n;i++){
			if(s[0][i]<min&&s[0][i]!=0){
				min=s[0][i];
				p=s[1][i];
				u=s[2][i];
			}
		}
		for(i=p;i<=u;i++)
			v[i]=10001;
		aux-=(u-p+1);
		fprintf(g,"%d %d %d\n",min,p,u);
		min=10002;
	}
	
	fclose(f);
	fclose(g);
	return 0;
}