Pagini recente » Cod sursa (job #1310391) | Cod sursa (job #3225384) | Cod sursa (job #1334901) | Cod sursa (job #645042) | Cod sursa (job #1804204)
#include <cstdio>
#include <algorithm>
using namespace std;
const int G=10005;
int n,g,w,p,maxx,val,d[G];
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&g);
for(int k=1;k<=n;k++){
scanf("%d%d",&w,&p);
if(w>g or p==0) continue;
for(int j=min(maxx, g-w);j>=0;j--){
if(d[j]==0 and j!=0) continue;
if(d[j+w]<d[j]+p){
d[j+w]=d[j]+p;
if(d[j+w]>val) val=d[j+w];
if(j+w>maxx) maxx=j+w;
}
}
}
printf("%d\n",val);
return 0;
}