Cod sursa(job #412624)

Utilizator RoCkyRomila RoCky Data 5 martie 2010 20:35:43
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
using namespace std;
ifstream in("energii.in");
ofstream out("energii.out");
int cost[15000];
int c[1100],e[1100];
long val=2000000,W;
int i,j,g;
int main ()
{
	in>>g>>W;
	for(i=1;i<=g;i++)
		in>>e[i]>>c[i];
	int max  = 0;
	cost[0]=1;
	for(i=1;i<=g;i++)
		for(j=max;j>-1;j--)
		{
			if(cost[j]>0)
			{
				if(cost[j+e[i]]==0||cost[j+e[i]]>cost[j]+c[i])
				{
					cost[j+e[i]]=cost[j]+c[i];
					if(j+e[i]>=W&&val>cost[j+e[i]])
						val=cost[j+e[i]];
					if(val>j+e[i])
						max=j+e[i];
				}
			}
			if(W<max)
				max=W;
		}
	if(val==2000000)
		out<<'-1';
	else
	out<<--val;
	return 0;
}