Mai intai trebuie sa te autentifici.
Cod sursa(job #2708597)
Utilizator | Data | 19 februarie 2021 08:35:34 | |
---|---|---|---|
Problema | Problema rucsacului | Scor | 0 |
Compilator | cpp-64 | Status | done |
Runda | Arhiva educationala | Marime | 0.78 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
int pd[10001];
pair <int , int> v[5001];
int main ()
{
int n, g;
in >> n >> g;
for (int i = 1;i <= n;++i)
{
int a, b;
in >> a >> b;
v[i].first = a;
v[i].second = b;
}
pd[v[1].first] = v[1].second;
for (int i = 2;i<=n;++i)
{
for (int j = g - v[i].first; j>=0; --j)
if (pd[j] && pd[j] + v[i].second > pd[j + v[i].first])
pd[j + v[i].first] = pd[j] + v[i].second;
pd[v[i].first] = max (pd[v[i].first], v[i].second);
}
int rez = 0;
int x = g;
for (int i = 1; i<=g;++i)
rez = max (rez, pd[i]);
out << pd[x] << '\n';
return 0;
}