Pagini recente » Cod sursa (job #9692) | Cod sursa (job #97963) | Cod sursa (job #1020775) | Cod sursa (job #2843747)
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,v[5001],d[10005],s,g,p[5001];
int main()
{
fin>>n>>g;
for(int i=1;i<=n;i++)
{
fin>>v[i]>>p[i];
}
d[0]=0; /// profitul maxim sa incarc in rucsac greutate 0 este 0;
for(int i=1;i<=g;i++)
{
d[i]=-1;
}
int indicemaxim1=0;
for(int i=1;i<=n;i++)
{
for(int j=indicemaxim1;j>=0;j--)
{
if(d[j]!=-1) /// s a obt anterior suma de greutati j
{
if(j+v[i]<=g)
{
if(d[j+v[i]]<d[j]+p[i])
{
d[j+v[i]]=d[j]+p[i];
indicemaxim1=max(indicemaxim1,j+v[i]);
}
}
}
}
}
int sol=0;
for(int i=1;i<=g;i++)
sol=max(d[i],sol);
fout<<sol;
}