Pagini recente » Cod sursa (job #1962941) | Cod sursa (job #1435130) | Cod sursa (job #1244401) | Cod sursa (job #262549) | Cod sursa (job #1237646)
#include<stdio.h>
#include<math.h>
#include<algorithm>
#define NMAX 5005
#pragma warning(push)
#pragma warning(disable: 4996) //4996 for _CRT_SECURE_NO_WARNINGS equivalent
int solutie[2][10010];
int main()
{
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
int numarObiecte, greutateMaxima;
int greutate[NMAX];
int profit[NMAX];
int greutateCurenta;
int linieAnterioara = 0;
int liniaCurenta = 1;
scanf("%d%d", &numarObiecte, &greutateMaxima);
for (int i = 1; i <= numarObiecte; ++i)
{
scanf("%d%d", &greutate[i], &profit[i]);
}
for (int i = 1; i <= numarObiecte; ++i, linieAnterioara = liniaCurenta)
{
for (int greutateCurenta = 0; greutateCurenta <= greutateMaxima; ++greutateCurenta)
{
liniaCurenta = 1 - linieAnterioara;
solutie[liniaCurenta][greutateCurenta] = solutie[linieAnterioara][greutateCurenta];
if (greutate[i] <= greutateCurenta)
solutie[liniaCurenta][greutateCurenta] = std::max(solutie[liniaCurenta][greutateCurenta], solutie[linieAnterioara][greutateCurenta - greutate[i]] + profit[i]);
}
}
printf("%d\n", solutie[linieAnterioara][greutateMaxima]);
return 0;
}
#pragma warning(pop)