Cod sursa(job #2759371)

Utilizator Mihai180315Mihai Smarandache Mihai180315 Data 17 iunie 2021 11:07:29
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>

using namespace std;
const int GMAX = 10000;

int d[GMAX + 5];


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

    int n, m, g, p, maxim, ans;
    fin >> n >> m;
    d[0] = 1;
    maxim = ans = 0;
    for (int nr = 1; nr <= n; ++nr) {
        fin >> g >> p;
        for (int i = min(maxim, m - g); i >= 0; --i) {
            if (d[i] != 0) {
                if (d[i + g] < d[i] + p) {
                    d[i + g] = d[i] + p;
                    if (d[i] + p > ans) {
                        ans = d[i] + p;
                    }
                }
            }
        }
        maxim += g;
        if (maxim > m) {
            maxim = m;
        }
    }
    fout << ans - 1;
    return 0;
}