Pagini recente » Cod sursa (job #3348853) | Cod sursa (job #856971) | Cod sursa (job #960758) | Borderou de evaluare (job #1558184) | Cod sursa (job #3348880)
#include <iostream>
#include <fstream>
using namespace std;
const int maxn = 10005;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
int n, g;
int profit[maxn];
int greutate[maxn];
long long profitMax;
void bt(int pos, long long gr, long long pr) {
if (pos == n) {
if (pr > profitMax)
profitMax = pr;
return;
}
if (gr + greutate[pos] <= g)
bt(pos + 1, gr + greutate[pos], pr + profit[pos]);
bt(pos + 1, gr, pr);
}
int main() {
in >> n >> g;
for (int i = 0; i < n; ++i)
in >> greutate[i] >> profit[i];
bt(0, 0, 0);
out << profitMax;
return 0;
}