Cod sursa(job #677739)

Utilizator alexdmotocMotoc Alexandru alexdmotoc Data 10 februarie 2012 16:34:34
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;

#define maxN 5005
#define INF 0x3f3f3f3f

int N , G , c[maxN] , p[maxN] , a[maxN][maxN];

int main ()
{
	freopen ("energii.in" , "r" , stdin);
	freopen ("energii.out" , "w" , stdout);
	
	scanf ("%d %d" , &N , &G);
	
	for (int i = 1 ; i <= N ; ++i)
		scanf ("%d %d" , &p[i] , &c[i]);
	
	
	for (int i = 1 ; i <= N ; ++i)
		for (int j = G ; j >= 1 ; --j)
		{
			a[i][j] = a[i - 1][j];
			
			if (p[i] >= j)
				a[i][j] = max (a[i][j] , a[i - 1][j + p[i]] + c[i]);
		}
	
	int minim = INF;
	
	for (int i = 1 ; i <= G ; ++i)
	{
		//cout << a[N][i] << " ";
		
		if (a[N][i] >= G && a[N][i] < minim)
			minim = a[N][i];
	}
		
	if (minim == INF)
	{
		printf ("-1");
		return 0;
	}
	
	printf ("%d" , minim);
	
	return 0;
}