Cod sursa(job #1025617)
| Utilizator | Data | 10 noiembrie 2013 12:54:56 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.62 kb |
#include <cstdio>
#define inFile "rucsac.in"
#define outFile "rucsac.out"
#define max(a,b) (a>b ? a:b)
int Sol[2][10001],
N, G, W, P, l, pos;
int main()
{
freopen( inFile, "r", stdin );
scanf("%d %d", &N, &G);
for( int i = 1; i <= N; i++, l = 1 - l )
{
scanf("%d %d", &W, &P);
for( pos = 0; pos <= G; pos++ )
{
Sol[1-l][pos] = Sol[l][pos];
if( W <= pos )
Sol[1-l][pos] = max( Sol[1-l][pos], Sol[l][pos - W] + P );
}
}
freopen( outFile, "w", stdout );
printf("%d\n", Sol[l][G]);
return 0;
}
