Pagini recente » Cod sursa (job #1301626) | Cod sursa (job #238829) | Cod sursa (job #1186569) | Cod sursa (job #1845727) | Cod sursa (job #2645770)
#include <fstream>
using namespace std;
const int nmax = 10000;
int d[nmax + 5];
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int main()
{
int n, G, i, j, last, g, p, maxp;
cin >> n >> G;
last = 0;
for(i = 1; i <= n; i ++){
cin >> g >> p;
for(j = last; j >= 0; j --){
if(j + g > G){
continue;
}
if(d[j] != -1){
/// Se formeaza suma greutatilor j + g
/// d[j + g] este profitul maxim actua al sumei j + g
if(d[j + g] < d[j] + p){
d[j + g] = d[j] + p;
if(j + g > last){
last = j + g;
}
}
}
}
}
maxp = -1;
for(int l = 1; l <= G; l ++){
if(d[l] > maxp){
maxp = d[l];
}
}
cout << maxp;
return 0;
}