Pagini recente » Monitorul de evaluare | Cod sursa (job #564867) | Cod sursa (job #582108) | Cod sursa (job #2435721) | Cod sursa (job #1767750)
#include<string.h>
#include<stdio.h>
#include<vector>
#include<algorithm>
const int NMAX = 5000;
const int GMAX = 10000;
using namespace std;
struct OBIECT {
int w, p;
}v[NMAX+5];
int d[GMAX+5];
int main() {
freopen ( "rucsac.in", "r", stdin );
freopen ( "rucsac.out", "w", stdout );
int n, g, w, p, i, j, my_max;
scanf ( "%d%d", &n, &g );
for ( i = 1 ; i <= n ; ++ i ) {
scanf ( "%d%d", &w, &p );
v[i].w = w;
v[i].p = p;
}
my_max = 0;
for( i = 1 ; i <= n ; ++i ) {
for( j = g - v[i].w ; j >= 0 ; --j ) {
if( d[j+v[i].w] < d[j] + v[i].p ) {
d[j+v[i].w] = d[j] + v[i].p;
if( d[j+v[i].w] > my_max )
my_max = d[j+v[i].w];
}
}
}
printf("%d", my_max);
return 0;
}