Cod sursa(job #1781528)

Utilizator elffikkVasile Ermicioi elffikk Data 16 octombrie 2016 22:39:02
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;

main() {
    ifstream cin("rucsac.in");
    ofstream cout("rucsac.out");
    int N, G;
    cin>>N>>G;
    vector<long> W(N), P(N);
    vector<long> a(G+1);
    fill(a.begin(), a.end(), -1);
    for (int i = 0; i < N; i++) {
        cin>>W[i]>>P[i];
        for (int j = G; j>=W[i]; j--) {
            if (a[j-W[i]]>-1) {
                a[j] = max(a[j], a[j-W[i]]+P[i]);
            }
        }
        if (a[W[i]] == -1) {
            a[W[i]] = P[i];
        }
    }
    cout<<*max_element(a.begin(), a.end());
}