Cod sursa(job #1354220)

Utilizator diana97Diana Ghinea diana97 Data 21 februarie 2015 18:17:27
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <iostream>
#include <fstream>

using namespace std;

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

const int NMAX = 5000 + 1;
const int GMAX = 10000;

int gmax, n, minim, suma;
int greutate[NMAX], profit[NMAX];
int sol[GMAX];

void citeste() {
    f >> n >> gmax;
    minim = GMAX + 1;
    for (int i = 1; i <= n; i++) {
        f >> greutate[i] >> profit[i];
        suma += greutate[i];
        minim = min(greutate[i], minim);
    }
}

void rezolva() {
    for (int i = 1; i <= n; i++) {
        for (int g = gmax; g >= 1; g--)
            if (greutate[i] <= g)
                sol[g] = max(sol[g], sol[g - greutate[i]] + profit[i]);
    }
}

int main() {
    citeste();
    rezolva();
    g << sol[gmax] << '\n';
    return 0;
}