Cod sursa(job #34006)

Utilizator andrei.12Andrei Parvu andrei.12 Data 19 martie 2007 23:16:05
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>
long s, x[1000000]; 
int main(){
	FILE*f=fopen("energii.in","r");
	FILE*g=fopen("energii.out","w");
	long v[1002], w[1002], s, i, j, p, nr, w1;
	fscanf(f,"%ld%ld",&nr,&w1);
	s=0;
	for (i=0;i<nr;i++){
		fscanf(f,"%ld%ld",&v[i],&w[i]);
		s+=v[i];
	}
	if (s<w1) fprintf(g,"-1\n");
	else {
	/*for (i=1;i<=s;i++)
		x[i]=1000000000;*/
	x[0]=1;
	for (i=0;i<nr;i++)
		for (j=s;j>=0;j--)
			if (x[j]&&((w[i]+x[j]<x[j+v[i]])||(x[j+v[i]]==0)))
				x[j+v[i]]=w[i]+x[j];
	p=x[w1];
	for (i=w1+1;i<=s;i++)
		if ((x[i]<p)&&(x[i]!=0)) p=x[i];
	fprintf(g,"%ld\n",p-1);
	}
	fclose(f);
	fclose(g);
	return 0;
}