Cod sursa(job #1754891)

Utilizator enacheionutEnache Ionut enacheionut Data 8 septembrie 2016 22:00:39
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<fstream>
#include<vector>

using namespace std;

int main()
{
    int numarObiecte;
    int greutate;
    int profitMaxim = 0;

    ifstream in("rucsac.in");
    in>> numarObiecte>> greutate;

    vector<int> greutateObiecte(numarObiecte, 0);
    vector<int> profitObiecte(numarObiecte, 0);
    vector<int> profitOptim(greutate, 0);

    for (int i = 1; i <= numarObiecte; ++i)
    {
        in>> greutateObiecte[i]>> profitObiecte[i];
    }
    in.close();

    for( int i = 1; i <= numarObiecte; ++i )
    {
        for( int j = greutate - greutateObiecte[i]; j >= 0; --j )
        {
            profitOptim[j+greutateObiecte[i]] = max( profitOptim[j+greutateObiecte[i]], profitOptim[j] + profitObiecte[i] );
            profitMaxim = max( profitMaxim, profitOptim[j+greutateObiecte[i]] );
        }
    }

    ofstream out("rucsac.out");
    out<< profitMaxim;
    out.close();

    return 0;
}