Pagini recente » Cod sursa (job #2004665) | Cod sursa (job #2150545) | Cod sursa (job #110135) | Cod sursa (job #1469843) | Cod sursa (job #643409)
Cod sursa(job #643409)
#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 = gr; j <= grMax; j++)
l2[j] = max(l1[j - gr] + profit, l1[j]);
aux = l1, l1 = l2, l2 = aux;
}
profit = - 0xfffffff;
for (j = 1; j <= grMax; j++)
if (profit < *&l1[j]) profit = *&l1[j];
printf("%d\n", profit);
return 0;
}