Pagini recente » Cod sursa (job #1056396) | Cod sursa (job #683148) | Cod sursa (job #2593963) | Cod sursa (job #29445) | Cod sursa (job #2401253)
#include <cstdio>
#include <algorithm>
using namespace std;
const int NMAX = 10000;
int d[NMAX+5];
int main() {
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int n,G,i,j,g,p,last,ans=0;
scanf("%d%d",&n,&G);
for(i=1; i<=G; i++)
d[i]=-1;
last=0;
for(i=1; i<=n; i++) {
scanf("%d%d",&g,&p);
for(j=last; j>=0; j--)
if(d[j]!=-1) {
if(j+g>G)
continue;
if(d[j]+p>d[j+g]) {
d[j+g]=d[j]+p;
if(j+g>last)
last=j+g;
}
}
}
ans=0;
for(j=G; j>=1; j--)
if(d[j]>ans)
ans=d[j];
printf("%d",ans);
return 0;
}