Cod sursa(job #2575800)
| Utilizator | Data | 6 martie 2020 15:30:00 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva educationala | Marime | 0.59 kb |
#include <fstream>
std::ifstream f("rucsac.in");
std::ofstream g("rucsac.out");
const int NMAX = 5005;
const int GMAX = 10005;
int n,wt[NMAX],pr[NMAX],d[GMAX],G;
int main(){
f >> n >> G;
for(int i = 1;i <= n;++i)
f >> wt[i] >> pr[i];
d[0] = 1;
for(int i = 1;i <= n;++i){
for(int j = G;j >= 0;--j)
if(j - wt[i] >= 0 && d[j - wt[i]] != 0)
d[j] = std::max(d[j],d[j - wt[i]] + pr[i]);
}
int sol = 0;
for(int i = 1;i <= G;++i)
sol = std::max(sol,d[i]);
g << sol - 1;
return 0;
}
