Pagini recente » Cod sursa (job #610512) | Cod sursa (job #3227444) | Cod sursa (job #3161576) | Cod sursa (job #911162) | Cod sursa (job #1040923)
#include <fstream>
#include<cstdio>
using namespace std;
struct fm{
int gr;
int prof;
};
struct vm{
int pr;
bool mar;
};
fm v[5005];
vm rucsac[10005];
int main()
{
FILE *in,*out;
in=fopen("rucsac.in","r");
out=fopen("rucsac.out","w");
int n,i,j,g,max=0;
fscanf(in,"%d%d",&n,&g);
for(i=1;i<=n;i++)
{
fscanf(in,"%d%d",&v[i].gr,&v[i].prof);
}
rucsac[0].mar=true;
for(i=1;i<=n;i++)
{
for(j=10000;j>=0;j--)
{
if(rucsac[j].mar==true)
{
if(rucsac[j+v[i].gr].mar==false)
{
rucsac[j+v[i].gr].mar=true;
rucsac[j+v[i].gr].pr=rucsac[j].pr+v[i].prof;
}
else
{
if(rucsac[j+v[i].gr].pr<rucsac[j].pr+v[i].prof)
rucsac[j+v[i].gr].pr=rucsac[j].pr+v[i].prof;
}
}
}
}
for(i=1;i<=g;i++)
{
if(rucsac[i].pr>max)
max=rucsac[i].pr;
}
fprintf(out,"%d",max);
return 0;
}