Pagini recente » Cod sursa (job #530412) | Cod sursa (job #2700448) | Cod sursa (job #1502167) | Cod sursa (job #409684) | Cod sursa (job #1189245)
#include <cstdio>
#include <algorithm>
using namespace std;
#define MAX 5005
struct rucsac
{
int g,v;
}mat[MAX];
rucsac sol[MAX];
bool cmp(rucsac a, rucsac b)
{
return a.v > b.v;
}
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int i,j,n,g,maxim,gmax,s,solf;
scanf("%d%d",&n,&g);
for(i=1; i<=n; i++)
scanf("%d%d",&mat[i].g,&mat[i].v);
sort(mat+1,mat+n+1,cmp);
for(i=1; i<=n; i++)
{
maxim=0;
for(j=i-1; j>=0; j--)
{
if(mat[i].g+sol[j].g<=g)
s=mat[i].v+sol[j].v;
if(maxim < s){maxim=s; gmax=sol[j].g+mat[i].g;}
}
sol[i].v=maxim; sol[i].g=gmax;
//printf("%d %d\n",gmax,maxim);
}
solf=0;
for(i=1; i<=n; i++)
if(solf < sol[i].v and sol[i].g<=g)
solf=sol[i].v;
printf("%d",solf);
return 0;
}