Cod sursa(job #2854459)

Utilizator ChelaruPaulChelaru Paul ChelaruPaul Data 21 februarie 2022 13:53:39
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.14 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 (2, vector<int>(capacitateRucsac + 1));
    int obiectCurent = 1, obiectAnterior;
    for(int obiect = 1; obiect <= nrObiecte; obiect ++) {

        obiectCurent = !obiectCurent;
        obiectAnterior = !obiectCurent;

        for(int capacitate = 1; capacitate <= capacitateRucsac; capacitate ++) {
                proces[obiectCurent][capacitate] = proces[obiectAnterior][capacitate];

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

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