Cod sursa(job #916711)

Utilizator fhandreiAndrei Hareza fhandrei Data 16 martie 2013 20:05:24
Problema Energii Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
// Include
#include <fstream>
using namespace std;

// Definitii
#define type_generator pair<int, int>
#define power first
#define cost second

// Constante
const int sz = 1001;
const int powerSZ = 5001;

// Variabile
ifstream in("energii.in");
ofstream out("energii.out");

int num, needPower;
int best[sz][powerSZ];

type_generator generator[sz];

// Main
int main()
{
	in >> num >> needPower;
	
	for(int i=1 ; i<=num ; ++i)
		in >> generator[i].power >> generator[i].cost;
	
	best[num][needPower] = -1;
	for(int i=1 ; i<=num ; ++i)
	{
		for(int j=0 ; j<=needPower ; ++j)
		{
			if(j <= generator[i].power)
			{
				if(best[i-1][j])
					best[i][j] = min(best[i-1][j], generator[i].cost);
				else
					best[i][j] = generator[i].cost;
			}
			else
			{
				if(best[i-1][j])
					best[i][j] = min(best[i-1][j], best[i-1][j-generator[i].power] + generator[i].cost);
				else
					if(best[i-1][j-generator[i].power])
						best[i][j] = best[i-1][j-generator[i].power] + generator[i].cost;
			}
		}
	}
	
	out << best[num][needPower] << '\n';
	
	in.close();
	out.close();
	return 0;
}