Pagini recente » Cod sursa (job #2783135) | Arhiva de probleme | Statistici Nicolae Filat (nicolaefilat) | Rezultatele filtrării | Cod sursa (job #3215745)
#include <fstream>
#define NMAX 5005
#define GMAX 10005
using namespace std;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
struct rucsac{
int w, p;
};
rucsac v[NMAX];
int dp[GMAX];
int main()
{
int n, gmax, i, j, maxx = -1;
in >> n >> gmax;
for (i = 1; i <= n; ++i)
in >> v[i].w >> v[i].p;
for (i = 1; i < GMAX; ++i)
dp[i] = -1;
for (i = 1; i <= n; ++i)
{
for (j = gmax; j >= 0; --j)
{
if (j - v[i].w >= 0 && dp[j - v[i].w] != -1)
{
dp[j] = max(dp[j], dp[j - v[i].w] + v[i].p);
}
}
}
for (i = 1; i <= gmax; ++i)
maxx = max(maxx, dp[i]);
out << maxx;
return 0;
}