Cod sursa(job #489404)

Utilizator loginLogin Iustin Anca login Data 2 octombrie 2010 15:09:42
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
# include <fstream>
# include <iostream>
# define DIM 1003
# define EMax 5003
# define infinit 1000000000
using namespace std;
int g, w, e[DIM], c[DIM], cost[EMax], cmin=infinit;

void read ()
{
	ifstream fin ("energii.in");
	fin>>g>>w;
	for (int i=1;i<=g;++i)
		fin>>e[i]>>c[i];		
}

void solve ()
{
	for(int i=1;i<=w;++i)
		cost[i]=-1;
	for(int i=1;i<=g;++i)
		for(int j=w;j>=0;--j)
			if (cost[j]!=-1)
			{
				if (j+e[i]>w)
					if (cmin>cost[j]+c[i])
						cmin=cost[j]+c[i];
				if (j+e[i]<=w)
					if (cost[j+e[i]]>cost[j]+c[i] || cost[j+e[i]]==-1)
						cost[j+e[i]]=cost[j]+c[i];
			}
}

int main ()
{
	read (); 
	solve ();
	ofstream fout ("energii.out");
	if (cmin==infinit && cost[w]==-1)
		fout<<"-1";
	else 
		if (cost[w]==-1)
			fout<<cmin;
		else
			if (cmin==infinit)
				fout<<cost[w];
			else
				fout<<(cmin<cost[w]?cmin:cost[w]);
	return 0;
}