Cod sursa(job #162519)

Utilizator andreisfrentSfrent Andrei andreisfrent Data 20 martie 2008 10:03:59
Problema Energii Scor 55
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <stdio.h>
#define G 1000
#define W 5000
#define INFINIT 10000000

int c[G+1],e[G+1]; //costul si energia fiecarui generator
int a[G*W+1], b[G*W+1];
int g,w;

int main()
{
	freopen("energii.in","r",stdin);
	scanf("%d%d",&g,&w);
	int i,j;
	for(i=1;i<=g;++i) scanf("%d%d",&e[i],&c[i]);
	fclose(stdin);
	for(i=1;i<=W;++i) a[i]=b[i]=INFINIT; //initializez vectorii a,b
	for(i=1;i<=g;++i) //pentru fiecare generator
	{
		for(j=1;j<=W;++j) a[j]=b[j]; //realizez o copie a lui a in b
		for(j=0;j<=w;++j)
		{
			if(b[j+e[i]]>a[j]+c[i])      
			b[j+e[i]]=a[j]+c[i];  
		}
	}
	int minim=b[w];
	for(i=w+1;i<=W;++i) if(minim>b[i]) minim=b[i];
	if(minim==INFINIT) minim=-1;
	freopen("energii.out","w",stdout);
	printf("%d\n",minim);
	fclose(stdout);
	return 0;
}