Pagini recente » Cod sursa (job #2953084) | Cod sursa (job #2039171) | Cod sursa (job #2621058) | Cod sursa (job #1453808) | Cod sursa (job #1261649)
#include <cstdio>
using namespace std;
int Max,gr[5050],p[5050],n,g,i,s[10001],j;
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",&gr[i],&p[i]);
for (i=1; i<=g; i++) s[i]=0;
s[0]=0;
for (i=1; i<=n; i++) {
for (j=Max; j>=0; j--)
if (s[j]!=-1 && s[j+gr[i]]==-1) s[j+gr[i]]=p[i];
else if (s[j]!=-1 && s[j+gr[i]]<p[i]+s[j]) s[j+gr[i]]=s[j]+p[i];
Max+=gr[i];
}
Max=0;
for (i=1; i<=g; i++)
if (s[i]>Max) Max=s[i];
printf("%d",Max);
return 0;
}