Cod sursa(job #1623281)

Utilizator MailatMailat Radu Mailat Data 1 martie 2016 18:32:30
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#define NMax 5001
#define MaxG 10001
#define max(x,y) (x > y ? x : y)
using namespace std;

int n, GMax;
int c[NMax], g[NMax];
int v[MaxG][NMax];

void Citire()
{
    ifstream fin("rucsac.in");
    fin >> n >> GMax;
    for(int i=1; i <= n; i++) fin >> g[i] >> c[i];
}

void Rezolvare()
{
    for(int i=1; i <= n; i++)
    {
        for(int S=1; S<= GMax; S++)
        {
            if(g[i] <= S)
            {
                v[i][S] = max(c[i] + v[i-1][S - g[i]], v[i-1][S]);
            }
        }
    }
}

void Afisare()
{
    ofstream fout("rucsac.out");
    fout << v[n][GMax];
    fout.close();
}
int main()
{
    Citire();
    Rezolvare();
    Afisare();
    return 0;
}