Cod sursa(job #159232)

Utilizator hazegirlCatalina Predoi hazegirl Data 14 martie 2008 00:07:56
Problema Energii Scor 45
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
//energii
#include<fstream.h>
int min[5002][1002];

int main()
{int i,j, gen,w,en[1002], c[1002], sum1=0,cmin=32000,add,a;
ifstream f("energii.in");
ofstream g("energii.out");
f>>gen>>w;
for(i=1;i<=gen;++i)
       {f>>en[i]>>c[i];
	sum1+=en[i];
	if(cmin>c[i])
		{ cmin=c[i];
		add=i;}
	if(cmin==c[i])
		if(en[i]>en[add])
			add=i;

	}
if(sum1<w)
	{g<<"-1"<<'\n';
	f.close();
	g.close();
	return 0;}
for(i=1;i<=en[add];i++)
	{min[i][0]=c[add];
	 min[i][add]=1;}
for(i=en[add]+1;i<=w;i++)
	{ cmin=32000;
	for(j=1;j<=gen;++j)
		{a=i-en[j]; if(a<0) a=0;
		if(min[a][j]==0)
			if(min[a][0]+c[j]<cmin)
				{cmin=min[a][0]+c[j];
				add=j;
				}
		}
	min[i][0]=cmin;
	min[i][add]=1;
	a=i-en[add];
	if(a<0) a=0;
	for(j=1;j<=gen;++j)
		  if(min[a][j]==1)
			min[i][j]=1;
	}
g<<min[w][0]<<'\n';
f.close();
g.close();
return 0;
}