Cod sursa(job #282545)

Utilizator irene_mFMI Irina Iancu irene_m Data 17 martie 2009 21:27:00
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream.h>
int n,w,e[1005],c[1005],sw=0,max=0,min=32000;
long s[5000];

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()
{
	int 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])
				{
					s[j+e[i]]=c[i]+s[j];
					if(j+e[i]>max)
						max=j+e[i];
					if(j+e[i]>=w && j+e[i]<min)
						min=j+e[i];
				}
		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 && e[i]<min)
			min=j+e[i];
		if(max>=w && max<min)
				min=max;
	}
}

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

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