Cod sursa(job #92280)

Utilizator P1gl3TGilca Mircea Alexandru P1gl3T Data 14 octombrie 2007 20:39:04
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>
int p[10000];
int main ()
{
	int g, w, e[1001],c[1001],i,j,t=0,max=0,min; 
	p[0]=1;
	FILE *in=fopen("energii.in","r"), *out=fopen("energii.out","w");
	
	fscanf(in,"%d%d",&g,&w);
	for(i=0;i<g;i++)
		{
			fscanf(in,"%d%d",&e[i],&c[i]);
			t+=e[i];
		}	
		
	if(t<w)
	{
		fprintf(out,"-1\n");
		return 0;
	}
	
	for(i=0;i<g;i++)
		for(j=max;j>=0;j--)
			if(p[j])
			{
				p[j+e[i]]=p[j]+c[i];
				if(j+e[i]>max) max=j+e[i];
			}
	min=p[max];
	for(i=w;i<=max;i++)
		if(p[i]&&p[i]<min) min=p[i];
	fprintf(out,"%d\n",min-1); 
	return 0;
}