Cod sursa(job #675)

Utilizator oumbraPaul Filimoon oumbra Data 11 decembrie 2006 18:31:29
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <fstream.h>

//using namespace std;

int main()
{
	ifstream fi("energii.in");
	ofstream fo("energii.out");

	int g, w, E[1000], C[1000];

	int CP[1000], V[1000];

	fi >> g >> w;

	int i, j;

	for(i=0; i<g; i++)
		fi >> E[i] >> C[i];

	// idi-sort
	int max;
	for(i=0; i<g; i++)
	{
		max = 0;
		for(j=0; j<g; j++)
		{
			if(E[j]>E[max])
			{
				max=j;
			}
		}
		if(max)
		{
			E[i] += E[max];
			E[max] = E[i]-E[max];
			E[i] -= E[max];

			C[i] += C[max];
			C[max] = C[i]-C[max];
			C[i] -= C[max];
		}

	}

	CP[0]=C[0];
	V[0]=-1*w+E[0];

	int f;

	for(i=1; i<g; i++)
	{
		f=0;
		for(j=i-1; j>0&&!f; j--)
		{
			if(V[j]<0) f=1;
		}
		if(f)
		{
			CP[i]=C[j+1]+C[i];
			V[i]=V[j+1]+E[i];
		} else {
			CP[i]=C[i];
			V[i]=-1*w+E[i];
		}
	}

	f=32000;
	for(i=0; i<g; i++)
	{
		if(V[i]>=0)
		{
			if(CP[i]<f)
			{
				f=CP[i];
			}
		}
	}

	if(f==32000)
		f=-1;

	fo << f;
	return 0;
}