Pagini recente » Cod sursa (job #2668988) | Cod sursa (job #527586) | Cod sursa (job #2447137) | Cod sursa (job #2679709) | Cod sursa (job #1174581)
#include <cstdio>
#define MAXN 5000
#define MAXG 10000
struct obj{
int w, p;
};
obj v[MAXN];
int profit[MAXG+1];
int main () {
FILE *f, *g;
f = fopen( "rucsac.in", "r" );
g = fopen( "rucsac.out", "w" );
int n, G, max;
fscanf( f, "%d%d", &n, &G );
for( int i = 0 ; i < n ; ++i )
fscanf( f, "%d%d", &v[i].w, &v[i].p );
for( int i = 1 ; i <= G ; ++i )
profit[i] = -1;
for( int i = 0 ; i < n ; ++i )
for( int j = G ; j >= 0 ; --j )
if( profit[j] != -1 && j + v[i].w <= G && profit[j + v[i].w] < profit[j] + v[i].p )
profit[j + v[i].w] = profit[j] + v[i].p;
max = -1;
for( int i = 0 ; i <= G ; ++i )
if( profit[i] > max )
max = profit[i];
fprintf( g, "%d\n", max );
fclose( f );
fclose( g );
return 0;
}