Cod sursa(job #2635373)
| Utilizator | Data | 14 iulie 2020 11:54:31 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 10 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int w[5000];
int p[5000];
int best(int i, int j)
{
if(i == 0 || j == 0)
{
//cout << "i=" << i << endl;
//cout << "j=" << j << endl;
return 0;
}
else if(j >= w[i-1])
return max(best(i - 1, j), best(i - 1, j - w[i-1]) + p[i-1]);
return best(i - 1, j);
}
int main()
{
int n, g;
in >> n >> g;
for(int i = 0; i < n; i++)
{
in >> w[i] >> p[i];
}
out << best(n, g);
return 0;
}
