Cod sursa(job #33985)

Utilizator andrei.12Andrei Parvu andrei.12 Data 19 martie 2007 23:01:13
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<stdio.h>
long s; 
int main(){
	FILE*f=fopen("energii.in","r");
	FILE*g=fopen("energii.out","w");
	long v[50], w[50], x[50], s, i, j, p, nr, w1;
	fscanf(f,"%d%d",&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]!=1001&&w[i]+x[j]<x[j+v[i]])
				x[j+v[i]]=w[i]+x[j];
	p=x[w1];
	for (i=w1+1;i<=s;i++)
		if (x[i]<p) p=x[i];
	fprintf(g,"%ld",p-1);
	}
	fclose(f);
	fclose(g);
	return 0;
}