Pagini recente » Cod sursa (job #182464) | Cod sursa (job #1092151) | Cod sursa (job #2828940) | Cod sursa (job #98566) | Cod sursa (job #643432)
Cod sursa(job #643432)
#include<cstdio>
#define max(a,b) a > b ? a : b
using namespace std;
int main(){
freopen("rucsac.in", "r", stdin), freopen("rucsac.out", "w", stdout);
int nrOb, grMax, i, j, gr, profit;
scanf ("%d %d", &nrOb, &grMax);
int lin1[grMax+1], lin2[grMax+1], *l1 = lin1, *l2 = lin2, *aux;
for (i = 0 ; i <= grMax; i++) lin1[i] = lin2[i] = 0;
for (i = 0; i < nrOb; i++){
scanf ("%d %d", &gr, &profit);
for (j = 1; j <= grMax; j++)
if (j < gr) l2[j] = l1[j];
else l2[j] = max(l1[j - gr] + profit, l1[j]);
aux = l1, l1 = l2, l2 = aux;
}
for (profit = l1[1], j = 2; j <= grMax; j++)
profit = max (profit, l1[j]);
printf("%d\n", profit);
return 0;
}