Cod sursa(job #316647)

Utilizator pedobearBacauanu Vlad pedobear Data 20 mai 2009 16:59:25
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>

int d[10010],cost[1005],ener[1005];
int cmin = 9999999,G,W,i,j;

int min (int a,int b)
{
	if (a>b && b) return b;
	return a;
}

int main ()
{
	freopen ("energii.in","r",stdin);
	freopen ("energii.out","w",stdout);
	
	scanf ("%d %d",&G,&W);
	for (i=1;i<=G;i++) scanf ("%d %d",&ener[i],&cost[i]);
	
	for (i=1;i<=G;i++){
		for (j=10000;j>=1;j--) 
			if ( d[j] && j+ener[i]<=10000 ) d[j+ener[i]] = min(d[j]+cost[i],d[j+ener[i]]);
		d[ener[i]] = min(cost[i],d[ener[i]]);
	}
		
	for (i=W;i<=10000;i++) if (d[i] && d[i]<cmin) cmin = d[i];

	if (W==0) printf ("0");
	else if (cmin==9999999) printf ("-1");
	else printf ("%d",cmin);
	
	return 0;
}