Pagini recente » Cod sursa (job #452923) | Cod sursa (job #2208615) | Cod sursa (job #1996055) | Cod sursa (job #280454) | Cod sursa (job #826207)
Cod sursa(job #826207)
#include<stdio.h>
#define max(x,y) ((x)>(y)?(x):(y))
struct loer
{
int w,p;
};
int n,g,d[2][10005],curent,last,w,p,j,i;
loer v[5005];
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&g);
for(i=1;i<=n;i++)
{
scanf("%d%d",&w,&p);
v[i].w=w;
v[i].p=p;
}
for(i=1;i<=n;i++)
{
curent=i%2;
last=(i-1)%2;
for(j=1;j<=g;j++)
{
if(v[i].w<=j)
{
d[curent][j]=max(d[last][j],d[last][j-v[i].w]+v[i].p);
}
else
{
d[curent][j]=d[last][j];
}
}
}
printf("%d",d[curent][g]);
return 0;
}