Cod sursa(job #3215745)

Utilizator stefandutastefandutahoria stefanduta Data 15 martie 2024 12:25:13
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#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;
}