Cod sursa(job #1144225)

Utilizator AnduuFMI Alexandru Banu Anduu Data 16 martie 2014 19:40:40
Problema Problema rucsacului Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <cstdio>
using namespace std;

int a[5005][10005], G[5005], C[5005], n, GMax;

void read () {

    FILE *in = fopen ("rucsac.in", "r");

    fscanf (in, "%d%d", &n, &GMax);
    for (int i = 1; i <= n; ++i)
        fscanf (in, "%d%d", &G[i], &C[i]);
    //for (int i = 1; i <= n; ++i)
        //fscanf (in, "%d", &C[i]);

    fclose (in);
}

int max (int a, int b) {

    if (a > b)
        return a;
    else return b;
}

void solve () {

    for (int i = 1; i <= n; ++i)
        for (int j = 0; j <= GMax; ++j)
            if (G[i] > j)
                a[i][j] = a[i - 1][j];
            else a[i][j] = max (a[i - 1][j], C[i] + a[i - 1][j - G[i]]);
}

void write () {

    FILE *out = fopen ("rucsac.out", "w");

    fprintf (out, "%d", a[n][GMax]);

    fclose (out);
}

int main()
{
    read ();
    solve ();
    write ();

    return 0;
}