Pagini recente » Cod sursa (job #1568391) | Cod sursa (job #145546) | Cod sursa (job #561597) | Cod sursa (job #730386) | Cod sursa (job #1668803)
#include <stdio.h>
#define len_MAX 5000
int profit[len_MAX],greutate[len_MAX],rucsac[2*len_MAX + 1];
int main()
{
freopen("rucsac.in","r",stdin);
freopen("rucsac.out","w",stdout);
int N,G;
int i,j,mx;
int x,y;
scanf("%d %d",&N,&G);
for(i = 1; i <= N; ++i)
{
scanf("%d %d",&x,&y);
greutate[i] = x;
profit[i] = y;
}
mx = greutate[1];
for(i = 1; i <= N; ++i)
{
for(j = mx; j >= 1; --j)
{
if(rucsac[j] > 0 && rucsac[j + greutate[i]] < rucsac[j] + profit[i]){
rucsac[j + greutate[i]] = rucsac[j] + profit[i];
if(j + greutate[i] > mx)
mx = j + greutate[i];
}
}
if(rucsac[greutate[i]] == 0)
rucsac[greutate[i]] = profit[i];
}
mx = 0;
for(i = G; i >= 0; --i)
if(rucsac[i] > mx)
mx = rucsac[i];
printf("%d\n",mx);
return 0;
}