Cod sursa(job #2659597)

Utilizator BeilandArnoldArnold Beiland BeilandArnold Data 17 octombrie 2020 10:52:23
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    ifstream fin("rucsac.in");
    ofstream fout("rucsac.out");

    int N, G;
    fin >> N >> G;

    vector<int> w(N), p(N);
    for (int i = 0; i < N; ++i)
        fin >> w[i] >> p[i];

    vector<vector<int>> din(N, vector<int>(G+1));

    for (int g = 0; g <= G; ++g)
        if (g < w[0])
            din[0][g] = 0;
        else
            din[0][g] = p[0];

    for (int i = 1; i < N; ++i)
        for (int g = 0; g <= G; ++g) {
            int mx = din[i-1][g];

            if (g >= w[i]) {
                int masik = din[i-1][g-w[i]] + p[i];
                if (masik > mx)
                    mx = masik;
            }

            din[i][g] = mx;
        }

    fout << din[N-1][G] << '\n';

    return 0;
}