Pagini recente » Cod sursa (job #467791) | Cod sursa (job #853285) | Cod sursa (job #2933167) | Cod sursa (job #1506163) | Cod sursa (job #1098436)
#include <cstdio>
#define MAX 5050
#define MAXX 10000
using namespace std;
struct rucsac{
int gr,pr;
}q[MAX];
int maxim(int a,int b);
int n,k,d[MAXX],i,j,max,aux;
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;++i)scanf("%d%d",&q[i].gr,&q[i].pr);
for(i=1;i<=k;++i)d[i]=-1;
d[0]=0;
for(j=1;j<=n;++j)
for(i=k;i>=0;--i)
{
if(d[i]>=0){
aux=d[i]+q[j].pr;
if(i+q[j].gr<=k){
d[i+q[j].gr]=maxim(d[i+q[j].gr],aux);
if(d[i+q[j].gr]>max)max=d[i+q[j].gr];
}
}
if(d[i]>max)max=d[i];
}
printf("%d\n",max);
return 0;
}
int maxim(int a,int b)
{
if(a>b)return a;
return b;
}