Cod sursa(job #1212899)

Utilizator mariusn01Marius Nicoli mariusn01 Data 26 iulie 2014 14:02:48
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include <fstream>
#include <bitset>

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

bitset<10010> v;
int D[10010];

int n, m, i, j, G, g, p, sol;

int main() {
    fin>>n>>G;
    v[0] = 1;
    m = 1;
    for (i=1;i<=n;i++) {
        fin>>g>>p;
        m+=g;
        if (m>G)
            m = G;
        for (j=m;j>=0;j--) {
            if (v[j] == 1) {
                if (j+g <= G && D[j+g] < D[j] + p) {
                    v[j+g] = 1;
                    D[j+g] = D[j] + p;
                    sol = max(sol, D[j+g]);
                }
            }
        }
    }
    fout<<sol;
    return 0;
}