Cod sursa(job #459323)

Utilizator R.A.RFMI Romila Remus Arthur R.A.R Data 29 mai 2010 11:22:32
Problema Energii Scor 100
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 P[5001],C[1001],E[1001];
int i,j,maxim=0;
int W,G;
int Cmax = 99999;
int main ()
{
	in>>G;
	in>>W;
	for(i=0;i<G;i++)
		in>>E[i]>>C[i];
	P[0]=1;
	for(i=0;i<G;i++)
	{
		for(j=maxim;j>=0;j--)
			if(P[j])
			{
				if(j+E[i]<=W)
				{
					if(maxim<j+E[i])
						maxim = j+E[i];
					if(P[j+E[i]]==0||P[j+E[i]]>P[j]+C[i])
						P[j+E[i]]=P[j]+C[i];
				}
				else
					if(P[j]+C[i]<Cmax)
						Cmax=P[j]+C[i];
			}
	}
	if(P[W]>Cmax)
		P[W]=Cmax;
	if(P[W])
		out<<P[W]-1<<'\n';
	else
		out<<"-1\n";
	return 0;
}