Cod sursa(job #615455)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 9 octombrie 2011 19:11:54
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <cstdio>
#include <algorithm>

using namespace std;

int g, w, W[1010], P[1010];
int a[1010][5010];

void Citire()
{
	freopen ("energii.in", "r", stdin);
	scanf ("%d%d", &g, &w);
	int i;
	for(i=1; i<=g; i++)
		scanf("%d%d", &W[i], &P[i]);	
}

void Rezolvare()
{
	int i, j;
	for	(i=0; i<=g; i++)
		for(j=1; j<=w; j++)
			a[i][j] = 2000000000;
		
	for(i=1; i<=g; i++)
		for(j=1; j<=w; j++)
		{
			if(W[i] <= j)
				a[i][j] = min (a[i-1][j], a[i-1][j-W[i]] + P[i]);
			else
				a[i][j] = min (a[i-1][j], P[i]);
		}
}

void Afisare()
{
	freopen ("energii.out", "w", stdout);
	if (a[g][w] <= w)
		printf ("-1\n");
	else
		printf ("%d\n", a[g][w]);
}

int main ()
{
	Citire();
	Rezolvare();
	Afisare();	
	return 0;
}