Cod sursa(job #586783)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 2 mai 2011 21:47:36
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <iostream>
#include <fstream>

using namespace std;

long N, W[1001][5001], C[1001][5001], EMinim, E, EG[1001], CG[1001], S;

void Citire ()
{
	ifstream fin ("energii.in");
	int i;
	fin >> N >> EMinim;
	for (i=0; i<N; i++)
	{
		fin >> EG[i] >> CG[i];
		E+=EG[i];
	}
	fin.close ();
}

void Afisare ()
{
	ofstream fout ("energii.out");
	fout << S << "\n";
	fout.close ();
}

int main ()
{
	int i, j;
	Citire ();
	if (E<EMinim)
	{
		S=-1;
	}
	else
	{
		for (j=1; i<=EMinim; j++)
		{
			W[0][j]=EG[0];
			C[0][j]=CG[0];
		}
		for (i=1; i<N; i++)
		{
			for (j=1; j<=EMinim; j++)
			{
				if (W[i-1][j]>=j)
				{
					if (C[i-1][j]<C[i-1][j-EG[i]]+CG[i])
					{
						W[i][j]=W[i-1][j];
						C[i][j]=C[i-1][j];
					}
					else
					{
						W[i][j]=W[i-1][j-EG[i]]+EG[i];
						C[i][j]=C[i-1][j-EG[i]]+CG[i];
					}
				}
				else
				{
					W[i][j]=W[i-1][j-EG[i]]+EG[i];
					C[i][j]=C[i-1][j-EG[i]]+CG[i];
				}
			}
		}
		S=C[N-1][EMinim];
	}
	Afisare ();
	return 0;
}