Cod sursa(job #1355103)

Utilizator somuBanil Ardej somu Data 22 februarie 2015 13:22:28
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
#define nmax 5005
#define gmax 10005

using namespace std;

struct object {
    int weight, profit;
} O[nmax];

int Curr[gmax], Prev[gmax];

int main() {
    
    ifstream fi("rucsac.in");
    ofstream fo("rucsac.out");
    
    int N, G;
    
    fi >> N >> G;
    for (int i = 1; i <= N; i++)
        fi >> O[i].weight >> O[i].profit;
    
    for (int i = 1; i <= N; i++) {
        for (int j = 1; j <= G; j++) {
            if (j >= O[i].weight)
                Curr[j] = max(Prev[j], O[i].profit + Prev[j - O[i].weight]);
            else
                Curr[j] = Prev[j];
        }
        if (i < N)
            for (int j = 1; j <= G; j++) Prev[j] = Curr[j];
    }
    
    fo << Curr[G] << "\n";
    
    fi.close();
    fo.close();
    
    return 0;
}