Cod sursa(job #1275573)

Utilizator StarGold2Emanuel Nrx StarGold2 Data 25 noiembrie 2014 13:04:25
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <fstream>
#include <cstring>
#define INF 50000001

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");


int max(int a, int b) {
    if (a > b)
        return a;
    else
        return b;
}

int main(){

    fin>>n>>g;
    for (i=1;i<=n;i++) {
        fin>>G[i]>>P[i];
    }

    // d[i] = profitul maxim pentru a obtine greutatrea i
    for (i=1;i<=g;i++)
        d[i] = INF;
    d[0] = 0;
    for (i=1;i<=n;i++) {
        for (j=g;j>=0;j--)
            if (d[j] != INF) {
                if (j + G[i] <= g) {
                    d[j+G[i]] = max(d[j+G[i]], d[j] + P[i]);
                    sol = max (sol, d[j+G[i]]);
                }
            }
    }

    fout << sol;

    return 0;

}