Cod sursa(job #1831774)
| Utilizator | Data | 18 decembrie 2016 18:32:25 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.61 kb |
#include <cstdio>
#include <iostream>
using namespace std;
#define NMAX 10001
int D[ NMAX ];
int main () {
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int N, M, G, i, j, g, v, ma;
ma = -1;
scanf( "%d%d",&N,&G );
for ( i = 1; i <= N; ++i ) {
scanf( "%d%d",&g,&v );
for ( j = G - g; j >= 1; --j )
if ( D[ j ] )
D[ j + g ] = max( D[ j + g ], D[ j ] + v );
D[ g ] = max( D[ g ], v );
}
for ( i = 1; i <= G; ++i )
ma = max( ma, D[ i ] );
printf("%d",ma);
return 0;
}
