Cod sursa(job #418534)

Utilizator GotenAmza Catalin Goten Data 15 martie 2010 23:29:02
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<fstream.h>
#define u (1<<30)
int e[1100],c[1100],dp[6000];
int main()
{
	int n,w,i,wmax=0,j;
	ifstream f("energii.in");
	ofstream g("energii.out");
	f>>n>>w;
	for(i=1;i<=n;i++)
		f>>e[i]>>c[i];
	for(i=1;i<=w;i++)
		dp[i]=(1<<30);
	for(i=1;i<=n;i++)
		for(j=wmax;j>=0;j--)
			if(dp[j]!=u)
				if(j+e[i]<w)
				{
					if(dp[j+e[i]]>dp[j]+c[i])
					{
						dp[j+e[i]]=dp[j]+c[i];
						if(wmax<j+e[i])
							wmax=j+e[i];
					}
				}
			else
				if(j+e[i]>=w)
					if(dp[w]>dp[j]+c[i])
					{
						dp[w]=dp[j]+c[i];
						if(wmax<w)
							wmax=w;
					}				
	if(dp[w]==u)
		g<<"-1";
	else
		g<<dp[w];
	return 0;
}