Cod sursa(job #2854397)

Utilizator ChelaruPaulChelaru Paul ChelaruPaul Data 21 februarie 2022 12:51:30
Problema Problema rucsacului Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>>
#include <vector>
using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

int main()
{
    int nrObiecte, capacitateRucsac;

    fin >> nrObiecte >> capacitateRucsac;

    vector <int> greutateObiect(nrObiecte + 1), valoareObiect(nrObiecte + 1);
    for(int i = 1; i <= nrObiecte; i ++)
        fin >> greutateObiect[i] >> valoareObiect[i];

    vector <vector<int> > proces (nrObiecte + 1, vector<int>(capacitateRucsac + 1));
    for(int obiect = 1; obiect <= nrObiecte; obiect ++) {
        for(int capacitate = 1; capacitate <= capacitateRucsac; capacitate ++) {
                proces[obiect][capacitate] = proces[obiect - 1][capacitate];

            if(capacitate >= greutateObiect[obiect])
                proces[obiect][capacitate] = max(proces[obiect - 1][capacitate], proces[obiect - 1][capacitate - greutateObiect[obiect]] + valoareObiect[obiect]);
        }
    }

    fout << proces[nrObiecte][capacitateRucsac];
    return 0;
}