Cod sursa(job #2882031)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 31 martie 2022 09:38:14
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#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];
}