Pagini recente » Cod sursa (job #2642554) | Cod sursa (job #1643097) | Cod sursa (job #607373) | Cod sursa (job #2946388) | Cod sursa (job #2247081)
#include <cstdio>
using namespace std;
struct ruc_el
{
int val, cost;
};
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int n, maxw, i, j, c_max = 0, new_max;
scanf("%d%d", &n, &maxw);
ruc_el elements[n+1];
int rucsac[maxw+1];
for(i=1; i<=maxw; ++i)
rucsac[i] = -1;
rucsac[0]=0;
for(i=1; i<=n; ++i)
scanf("%d%d", &elements[i].cost, &elements[i].val);
for(i=1; i<=n; ++i)
{
new_max = c_max;
for(j=c_max; j>=0; --j)
if (rucsac[j] >= 0)
{
rucsac[j + elements[i].cost] = rucsac[j] + elements[i].val;
if (j+ elements[i].cost > new_max)
new_max = j + elements[i].cost;
}
c_max = new_max;
}
printf("%d\n", rucsac[maxw]);
return 0;
}