Cod sursa(job #1921858)

Utilizator RobybrasovRobert Hangu Robybrasov Data 10 martie 2017 15:02:48
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
#include <iostream>
#define FOR(i, n) for (int i = 0; i < n; ++i)
#define N 5000
#define G 10001

using namespace std;

int C[2][G];
short W[N], P[N];

int main() {
    ifstream fin("rucsac.in");
    ofstream fout("rucsac.out");
    int n, g;
    fin >> n >> g;
    for (int i = 0; i < n; ++i)
        fin >> W[i] >> P[i];

    int k = 1;
    for (int i = 0; i < n; ++i, k ^= 1, cout << "\n")
        for (int j = W[i]; j <= g; ++j)
            C[k][j] = max(C[k ^ 1][j - W[i]] + P[i], C[k ^ 1][j]);

    fout << C[k ^ 1][g] << "\n";

    return 0;
}