Pagini recente » Cod sursa (job #901277) | Cod sursa (job #452853) | Cod sursa (job #2882031)
#include <fstream>
#include <algorithm>
constexpr int NMAX = 5001;
constexpr int GMAX = 10001;
int N, G;
int W[NMAX], P[NMAX];
int dp[2][GMAX];
int choice[NMAX];
int main()
{
std::ifstream in("rucsac.in");
in >> N >> G;
for (int i = 1; i <= N; ++i)
in >> W[i] >> P[i];
int crt = 1, prev = 0;
for (int i = 1; i <= N; ++i)
{
for (int g = 1; g <= G; ++g)
{
dp[crt][g] = dp[prev][g];
if (W[i] <= g && dp[crt][g] < dp[prev][g - W[i]] + P[i])
{
dp[crt][g] = dp[prev][g - W[i]] + P[i];
choice[i] = i;
}
}
crt = 1 - crt, prev = 1 - prev;
}
std::ofstream out("rucsac.out");
out << dp[prev][G];
}