Cod sursa(job #2394171)
Utilizator | Mihai Teisanu teisanumihai84 | Data | 1 aprilie 2019 13:01:51 |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.55 kb |
#include <fstream>
using namespace std;
int n, i, G, D[10001], g[5001], p[5001], j, maxim;
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]=0;
for (i=1; i<=G; i++)
D[i]=-1;
for (i=1; i<=n; i++)
for (j=G; j>=0; j--)
if (D[j]!=-1 && j+g[i]<=G)
D[j+g[i]]=max(D[j+g[i]], D[j]+p[i]);
for (i=1; i<=G; i++)
if (D[i]>maxim)
maxim=D[i];
fout<<maxim;
}