Cod sursa(job #585338)

Utilizator a_h1926Heidelbacher Andrei a_h1926 Data 28 aprilie 2011 22:17:14
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <iostream>
#include <fstream>

using namespace std;

long N, V[1001], G[1001], EMinim, E, C, D[1001][100000], SV, SG=1000000000;

void Citire ()
{
	ifstream fin ("energii.in");
	int i, v=0;
	fin >> N >> EMinim;
	for (i=0; i<N; i++)
	{
		fin >> V[i] >> G[i];
		if (E<EMinim)
		{
			E+=V[i];
			C+=G[i];
		}
		if ((v==0)&&(E>EMinim))
		{
			v=1;
			E+=V[i];
			C+=G[i];
		}
	}
	fin.close ();
}

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

inline int Max (int a, int b)
{
	if (a>b)
	{
		return a;
	}
	return b;
}

int main ()
{
	int i, j;
	Citire ();
	for (i=0; i<N; i++)
	{
		for (j=1; j<=C; j++)
		{
			if (j>=G[i])
			{
				D[i][j]=Max (D[i][j-1], D[i][j-G[i]]+V[i]);
			}
			else
			{
				D[i][j]=D[i][j-1];
			}
			if ((D[i][j]>=EMinim)&&(j<SG))
			{
				SG=j;
				break;
			}
		}
	}
	Afisare ();
	return 0;
}