Pagini recente » Cod sursa (job #2797439) | Cod sursa (job #1157219) | Cod sursa (job #2688842) | Cod sursa (job #2388640) | Cod sursa (job #2699727)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
const int MAXN = 5000;
const int MAXG = 10000;
int d[2][MAXG + 1];
int val[MAXN + 1], greutate[MAXN + 1];
int main(){
int n, g, i, j;
in>>n>>g;
for( i = 1; i <= n; i++ )
in>>greutate[i]>>val[i];
d[0][0] = 0;
for( i = 1; i <= n; i++ ){
for( j = 0; j <=g; j++ ){
d[i & 1][j] = d[(i - 1) & 1][j];
if( greutate[i] <= j )
d[i & 1][j] = max( d[(i - 1) & 1][j], d[( i - 1 ) & 1][j - greutate[i]] + val[i]);
}
}
out<<d[n & 1][g];
return 0;
}