Mai intai trebuie sa te autentifici.
Cod sursa(job #2681031)
Utilizator | Data | 4 decembrie 2020 20:09:15 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 100 |
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], fin >> 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;
}