Cod sursa(job #2770796)

Utilizator somethingforeveryoneMatei Gabriel somethingforeveryone Data 23 august 2021 12:39:02
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>

#define NMAX 5001
#define SUMMAX 20001

using namespace std;

ifstream cin ("rucsac.in");
ofstream cout("rucsac.out");

int f[SUMMAX], v[NMAX], p[NMAX];
int n, G;

void citire()
{
    cin >> n >> G;

    for(int i = 1; i <= n; i++)
        cin >> v[i] >> p[i];
}

void rucsac()
{
    int profitmaxim;
    profitmaxim = 0;

    for(int i = 1; i <= n; i++)
    {
        for(int j = G; j >= 1; j--)
            if(f[j] != 0 && j + v[i] <= G)
                if(f[j + v[i]] < f[j] + p[i])
                    f[j + v[i]] = f[j] + p[i];

        if (v[i] <= G && p[i] > f[v[i]])
            f[v[i]] = p[i];
    }
    for(int i = 1; i <= G; i++)
        profitmaxim = max(f[i], profitmaxim);

    cout << profitmaxim;
}

void rezolvare()
{
    citire();
    rucsac();
}

int main()
{
    rezolvare();
    return 0;
}