Cod sursa(job #695154)

Utilizator raluca_vacaruVacaru Raluca-Ioana raluca_vacaru Data 28 februarie 2012 10:49:48
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include <cstdio>
#include <algorithm> 

using namespace std ;

#define MAXN 5010
#define MAXG 10010

int n, g ;
int w[MAXN], p[MAXN] ;
int d[MAXN][MAXG] ;

int main () {
	int i, cw ;
	freopen ( "rucsac.in", "r", stdin ) ;
	scanf ( "%d %d\n", &n, &g ) ;
	for ( i=1; i<=n; ++i )
		scanf ( "%d %d\n", &w[i], &p[i] ) ;
	fclose ( stdin ) ;
	for ( i=1; i<=n; ++i )
		for ( cw=1; cw<=g; ++cw) {
			d[i][cw] = d[i-i][cw] ;
			if ( w[i] < cw ) 
				d[i][cw] = max ( d[i][cw], d[i-1][cw-w[i]] + p[i] ) ;
		}
	freopen ( "rucsac.out", "w", stdout ) ;
	printf ( "%d\n", d[n][g] ) ;
	fclose ( stdout ) ;
	return 0 ;
}