Cod sursa(job #642238)

Utilizator joli94Apostol Adrian Alexandru joli94 Data 30 noiembrie 2011 19:14:21
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<cstdio>

const int INF = -200;
const int M = 10001;
int n , G , g[M] , p[M] , sol[M] ;

int main()
{
	freopen ( "rucsac.in" , "r" , stdin );
	freopen ( "rucsac.out" , "w" , stdout );
	
	scanf ( "%d %d" , &n , &G );
	
	for (int i = 1 ; i<=n ; ++i )
		scanf ( "%d%d" , &g[i]  , &p[i] );
	
	for (int i=1 ; i<=n ; ++i )
		sol[i] = INF;
	sol[0] = 0;
	
	for (int i = 1 ; i<=n ; ++i )
	{
		for (int j = G- g[i] ; j>= 0 ; --j )
		{
			if (sol[j]+p[i]>sol[j+g[i]])
				sol[j+g[i]] = sol[j] + p[i];
		}
	}
	
	int max = -1;

	for (int i=1 ; i<=G ; ++i )
		if (sol[i]>max) max = sol[i];
	
	printf("%d\n" , max );

	return 0;
}