Cod sursa(job #862168)

Utilizator tudorv96Tudor Varan tudorv96 Data 22 ianuarie 2013 12:31:34
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <cstring>
using namespace std;

ifstream fin ("energii.in");
ofstream fout ("energii.out");

void Read ();
void Write ();
int Energy ();

int n;
int E;
struct generate{
	int e, c;
} G[1005];
int En[15005];

int main ()
{
	Read ();
	fin.close ();
	Write ();
	fout.close ();
	return 0;
}

void Read ()
{
	fin >> n >> E;
	for (int i = 0; i < n; ++i)
		fin >> G[i].e >> G[i].c;
}

void Write ()
{
	fout << Energy ();
	return ;
}

int Energy ()
{
	//memset (En, -1, sizeof(En));
	for (int i = 1; i < 15005; ++i)
		En[i] = 99999999;
	En[0] = 0;
	for (int i = 0; i < n; ++i)
		for (int j = E - G[i].e; j >= 0; --j)
			if (En[j] != 99999999 && En[j + G[i].e] > En[j] + G[i].c)
				En[j + G[i].e] = En[j] + G[i].c;
	int aux = E;
	while (En[aux] == 99999999)
		aux++;
	return En[aux];
}