Cod sursa(job #2467973)
| Utilizator | Data | 5 octombrie 2019 11:07:59 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.48 kb |
#include<fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int max(int x, int y) {
if (x > y)
return x;
return y;
}
long long n, g, pd[10009], p[5009], w[5009];
int main() {
in >> n >> g;;
for (int i = 1; i <= n; ++i)
in >> w[i] >> p[i];
for (int i = 1; i <= n; ++i)
for (int j = g - w[i]; j >= 0; --j)
pd[j + w[i]] = max(pd[j + w[i]], pd[j] + p[i]);
out << pd[g];
in.close();
out.close();
return 0;
}