Cod sursa(job #419891)

Utilizator marian77ivan marian liviu marian77 Data 18 martie 2010 09:59:41
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include <stdio.h>
#include <limits.h>
int n,w,v[5002],x,y,i,j;
int main() {
	FILE *f=fopen("energii.in","r");
	FILE *g=fopen("energii.out","w");
	fscanf(f,"%d%d",&n,&w);
	v[0]=0;
	for(i=1;i<=w;i++)
		v[i]=INT_MAX;
	for(i=1;i<=n;i++) {
		fscanf(f,"%d%d",&x,&y);
		for(j=w;j>=0;j--)
			if(v[j]!=INT_MAX)
				if(v[j]+y<v[j+x]&&j+x<=w)
					v[j+x]=v[j]+y;
				else
					if(v[j]+y<v[w]&&j+x>w)
						v[w]=v[j]+y;
	}
	if(v[w]!=INT_MAX)
		fprintf(g,"%d",v[w]);
	else
		fprintf(g,"-1");
	return 0;
}