Cod sursa(job #1005844)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 5 octombrie 2013 22:14:12
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<fstream>
#include<vector>
#include<algorithm>

using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int N, Gmax;
vector<int> Weight, Profit;
vector<vector<int> > Sol;

int main() {

    int i, line, curr_weight;

    f >> N >> Gmax;

    Weight.resize(N+1);
    Profit.resize(N+1);
    Sol.resize(2, vector<int>(Gmax+1, 0));

    for(i=1; i<=N; ++i)
        f >> Weight[i] >> Profit[i];

    for(i=1, line=0; i<=N; ++i, line=1-line)
        for(curr_weight=0; curr_weight<=Gmax; ++curr_weight) {
            Sol[1-line][curr_weight] = Sol[line][curr_weight];
            if(Weight[i] <= curr_weight)
                Sol[1-line][curr_weight] = max(Sol[1-line][curr_weight], Sol[line][curr_weight - Weight[i]] + Profit[i]);
        }

    g << Sol[line][Gmax] << "\n";

    f.close();
    g.close();
}