Cod sursa(job #2757161)

Utilizator andrei_culerdaCulerda Andrei andrei_culerda Data 4 iunie 2021 10:23:25
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
const int N = 10000;
int d[N+5];

int main()
{
    int n, w, p, g, last;
    fin >> n >> g;
    d[0] = 0;
    for(int i = 1; i <= g; i++)
    {
        d[i] = -1;
    }
    last = 0;
    for(int i = 1; i <= n; i++)
    {
        fin >> w >> p;
        for(int j = last; j >= 0; j--)
        {
            if(j + w > g)
                continue;
            if(d[j] != -1)
            {
                if(d[j] + p > d[j+w])
                    d[j+w] = d[j] + p;
                if(j + w > last)
                    last = j + w;
            }
        }
    }
    int maxp = -1;
    for(int j = g; j >= 1; j--)
    {
        if(d[j] > maxp)
            maxp = d[j];
    }
    fout << maxp;
    return 0;
}