Cod sursa(job #2276818)
Utilizator | Marius Nicoli mariusn01 | Data | 5 noiembrie 2018 14:17:33 |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.57 kb |
#include<fstream>
using namespace std;
int D[10010]; ///D[i] = profitul maxim prin care pot obtine greutatea i
int g[5001], p[5001];
int sol, i, j, n, G;
int main () {
ifstream fin ("rucsac.in");
ofstream fout("rucsac.out");
fin>>n>>G;
for(i=1;i<=n;i++)
fin>>g[i]>>p[i];
D[0] = 1;
for (i=1;i<=n;i++)
for (j=G; j>=0; j--)
if (D[j] != 0 && j+g[i] <= G) {
D[ j+g[i] ] = max( D[j+g[i]], D[j] + p[i] );
sol = max(sol, D[j+g[i]]);
}
fout<<-1 + sol;
return 0;
}