Cod sursa(job #2824566)
Utilizator | Data | 2 ianuarie 2022 17:42:58 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.45 kb |
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int n, g, wt[5001], val[5001], dp[10001], aux;
int main(){
in >> n >> g;
for (int i = 0; i < n; i++) {
in >> wt[i] >> val[i];
if (wt[i] == 0) {
aux += val[i];
}
else {
for (int w = g - wt[i]; w >= 0; w--) {
dp[w + wt[i]] = max(dp[w + wt[i]], dp[w] + val[i]);
}
}
}
out << dp[g] + aux;
return 0;
}