Cod sursa(job #1375547)
| Utilizator | Data | 5 martie 2015 13:35:32 | |
|---|---|---|---|
| Problema | Problema rucsacului | Scor | 25 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.6 kb |
#include <iostream>
#include<fstream>
using namespace std;
int main()
{
ifstream f("rucsac.in");
ofstream g("rucsac.out");
long long int n, G,i,m[5000], c[5000], a[5000], d[5000], max=0,k;
f>>n>>G;
for(i=1; i<=n; i++)
{
f>>m[i]>>c[i];
}
for(i=1; i<=2*G; i++) a[i]=d[i]=0;
a[m[1]]=c[1];
for(k=2; k<=n; k++)
{
for(i=1; i<=G; i++)
{
if(a[i+m[k]]<a[i]+c[k]) d[m[k]+i]=a[i]+c[k];
}
for(i=1; i<=G;i++)
a[i]=d[i];
}
for(i=1; i<=G; i++)
{
if(d[i]>max) max=d[i];
}
g<<max;
g.close();
}
