Cod sursa(job #282840)

Utilizator irene_mFMI Irina Iancu irene_m Data 18 martie 2009 13:14:12
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream.h>
int n,w,e[2005],c[2005];
long min=20000000,s[6000],max;

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

void sol()
{
	long i,j,maxt;
	for(i=1;i<=n;i++)
	{
		maxt=max;
		for(j=maxt;j>=1;j--)
			if(s[j])
				if((s[j+e[i]]==0 || s[j+e[i]]>c[i]+s[j]) && j+e[i]<6000)
				{
					s[j+e[i]]=c[i]+s[j];
					if(j+e[i]>max)
						max=j+e[i];
					if(j+e[i]>=w && s[j+e[i]]<min)
						min=s[j+e[i]];
				}
		if(e[i]<6000)
		{
			if(s[e[i]]==0 || s[e[i]]>c[i])
				s[e[i]]=c[i];
			if(e[i]>max)
				max=e[i];
			if(e[i]>=w && s[e[i]]<min)
				min=s[e[i]];
		}
	}
}

void afis()
{
	ofstream fout("energii.out");
	if(max>=w)
		fout<<min;
	else
		fout<<-1;
	fout.close();
}

int main()
{
	cit();
	sol();
	afis();
	return 0;
}