Cod sursa(job #2050566)

Utilizator deleted_fb9d5fb04f7b88d9DELETED deleted_fb9d5fb04f7b88d9 Data 28 octombrie 2017 10:29:30
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>

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

struct obiect {
    int gr, cost;
};

int dp[2][10001];
int n, G;
obiect Y[5001];

int main() {
    int i, j;
    int a, b;

    fin >> n >> G;
    for (i = 1; i <= n; ++i)
        fin >> Y[i].gr >> Y[i].cost;

    for (i = 1; i <= n; ++i)
        for (j = 1; j <= G; ++j) {
            a = b = 0;
            if (j >= Y[i].gr)
                a = dp[(i + 1) % 2][j - Y[i].gr] + Y[i].cost;

            b = dp[(i + 1) % 2][j];

            dp[i % 2][j] = max(a, b);
        }

    fout << dp[n][G] << '\n';

//    for (i = 1; i <= n; ++i) {
//        for (j = 1; j <= G; ++j) fout << dp[i][j] << ' ' ;
//        fout << '\n';
//    }

    return 0;
}