Cod sursa(job #2681029)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 4 decembrie 2020 20:08:13
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
ll n, x, maxim, pret[5005], pag[5005], pd[100005];

int main() {
    fin >> n >> x;
    for (int i = 1; i <= n; ++i)
        fin >> pret[i], cin >> pag[i];
    for (ll i = 1; i <= n; ++i) {
        for (ll j = x; j >= 1; --j) {
            if (j + pret[i] <= x) {
                pd[j + pret[i]] = max(pd[j + pret[i]], pd[j] + pag[i]);
                maxim = max(maxim, pd[j + pret[i]]);
            }
        }
        if (pd[pret[i]] < pag[i] && pret[i] <= x) {
            pd[pret[i]] = pag[i];
            maxim = max(maxim, pd[pret[i]]);
        }
    }
    fout << maxim;
    return 0;
}