Cod sursa(job #1714978)

Utilizator dcutitoiuCutitoiu Adrian-Nicolae dcutitoiu Data 9 iunie 2016 20:35:52
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include <iostream>
#include <fstream>
#include <map>
#include <vector>
#include <list>
#include <iterator>
#include <queue>
#include <algorithm>
#include <tuple>

#define greutate first
#define profit second

#define maxim(a, b) (a > b ? a : b)

using namespace std;

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



int main(){

    int N, G;
    in >> N >> G;

    vector<pair<int, int>> obiecte(N);
    vector<int> capacity(G+1);

    for( auto &obiect : obiecte){
        in >> obiect.greutate >> obiect.profit;
    }

    for(auto &obiect : obiecte){
        for(int capCurenta = G; capCurenta >= obiect.greutate; --capCurenta){
            capacity[capCurenta] = maxim(capacity[capCurenta], capacity[capCurenta - obiect.greutate] + obiect.profit);
        }
    }

    out << capacity[G];

    return 0;
}