Pagini recente » Cod sursa (job #2355288) | Cod sursa (job #2336112) | Cod sursa (job #2206340) | Cod sursa (job #272857) | Cod sursa (job #1261656)
#include <cstdio>
using namespace std;
int Max,gr[10000],p[10000],n,g,i,s[20000],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=g; 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=0;
for (i=1; i<=g; i++)
if (s[i]>Max) Max=s[i];
printf("%d",Max);
return 0;
}