Cod sursa(job #403392)

Utilizator Cristi09Cristi Cristi09 Data 24 februarie 2010 21:57:28
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<stdio.h>
int g,w,p[10001],c[10001],a[60001],m=999999,car[1001];//v[0][..]energie,v[1][..]costul
struct mat
{
	int c,e;
}best[1001][1001];
void read()
{
	FILE*f=fopen("energii.in","r");
	fscanf(f,"%d%d",&g,&w);
	int i;
	for(i=0;i<g;++i)
	{
		fscanf(f,"%d%d",&p[i],&c[i]);
		if(p[i]<m)m=p[i];
	}
	fclose(f);
}
int dinamic()
{
	int i,j,ok=1;
	a[0]=0;
	for(i=1;i<=w;++i)
	{
		a[i]=99999999;
		if(i==15)
			printf("DA");
		for(j=0;j<g;++j)
		{
			if(c[j]>=i-p[j]&&(a[i-p[j]]!=c[j]&&i-p[j]!=p[j]||a[i-p[j]]!=c[j]||i-p[j]!=p[j]))//??
			{
				if(c[j]+a[i-p[j]]<a[i])a[i]=c[j]+a[i-p[j]];
			}
		}
	}
	if(a[w]==99999999)return -1;
	return a[w];
}
int main()
{
	read();
	FILE*g=fopen("energii.out","w");
	fprintf(g,"%d\n",dinamic());
	fclose(g);
	return 0;
}