Cod sursa(job #1684593)

Utilizator AndreiFlorescuAndrei Florescu AndreiFlorescu Data 11 aprilie 2016 10:29:19
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <iostream>
#include <fstream>

using namespace std;

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

    int nr, gMax, sol = 0;
    int g[5001], p[5001], optim[10001];
    int i, j;

    // citirea datelor
    file_in >> nr >> gMax;
    for (i = 0; i < nr; i++) {
        file_in >> g[i] >> p[i];
    }

    // Calcularea solutiei
    for (i = 1; i <= gMax; i++) {
        optim[i] = -1;
    }
    optim[0]= 0;
    for (i = 0; i < nr; i++) {
        for (j = gMax - g[i]; j >= 0; j--) {
            if (optim[j] != -1 && optim[j] + p[i] > optim[j + g[i]]) {
                optim[j + g[i]] = optim[j] + p[i];
                if (optim[j + g[i]] > sol) {
                    sol = optim[j + g[i]];
                }
            }
        }
    }

    // Afisarea solutiei
    file_out << sol;

    return 0;
}