Cod sursa(job #807018)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 3 noiembrie 2012 21:58:32
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <fstream>
#include <algorithm>
using namespace std;

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

const int OO = (1<<30)-1, wmax = 5005, gmax = 1005;
int NG, W, R[wmax];
struct gen { int w, c; } G[gmax]; 
	
void cit ()
{
	fi >> NG >> W;
	for (int i = 1; i <= NG; i++)
		fi >> G[i].w >> G[i].c;
	for (int i = 1; i <= W; i++)
		R[i] = OO;
}

void ruc ()
{
	int g, w, w2;
	for (g = 1; g <= NG; g++)
	{
		for (w = W; w >= 0; w--)
		{
			w2 = min (w + G[g].w, W);
			if (R[w2] > R[w] + G[g].c)
			{
				R[w2] = R[w] + G[g].c;
			}
		}
	}
}

void afi ()
{
	if (R[W] != OO)
		fo << R[W] << '\n';
	else
		fo << "-1\n";
}

int main ()
{
	cit ();
	ruc ();
	afi ();
	return 0;
}