Cod sursa(job #2771791)
| Utilizator | Data | 29 august 2021 11:24:19 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.63 kb |
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int n, G, w[5001], p[5001], i, f[1000000], j, sol;
int main () {
cin>>n>>G;
for (i = 1;i <= n;i++) {
cin>>w[i]>>p[i];
}
for (i = 1;i <= n;i++) {
for (j = G;j >= 1;j--)
if (f[j] != 0) { /// obtinusem suma j
if (j + w[i] <= G && f[j + w[i]] < f[j] + p[i])
f[j + w[i]] = f[j] + p[i];
}
if (w[i] <= G && p[i] > f[w[i]])
f[w[i]] = p[i];
}
for (i = 1;i <= G;i++)
sol = max(sol, f[i]);
cout<<sol;
}
