Cod sursa(job #2552322)

Utilizator flvflvFlavius Ilinoiu flvflv Data 20 februarie 2020 19:19:34
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.92 kb
#include <iostream>
#include <fstream>
#include <stdlib.h>

#define max(a,b) (((a) > (b)) ? (a) : (b))

using namespace std;

int profit[2][10001];

int main()
{
    ifstream in("rucsac.in");
    ofstream out("rucsac.out");

    int n, g, greutate, valoare, current=0;
    in >> n >> g;

    in >> greutate >> valoare;
    for (int i = 1;i <= g;i++)
    {
        if (greutate <= i)
            profit[current][i] = valoare;
    }
    
    for (int nr = 2;nr <= n;nr++)
    {
        if (current == 1) current = 0;
        else current = 1;

        in >> greutate >> valoare;
        for (int i = 1;i <= g;i++)
        {
            if (greutate > i)
                profit[current][i] = profit[abs(current - 1)][i];
            else
                profit[current][i] = max(profit[abs(current - 1)][i], profit[abs(current - 1)][i - greutate]+valoare);
        }
    }
    out << profit[current][g];
}