Cod sursa(job #1907983)

Utilizator rangalIstrate Sebastian rangal Data 6 martie 2017 22:04:03
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <fstream>
#define in "rucsac.in"
#define out "rucsac.out"
#define max(a,b) (a > b ? a:b)
#define Nmax 5003
#define Gmax 10003

using namespace std;

ifstream fin(in);
ofstream fout(out);

int N,G;
int a1[Gmax],a2[Gmax];
int W,P;

inline void cpy()
{
    for(int i=1; i<=G; ++i)
        a1[i] = a2[i];
}

int main()
{
    fin>>N>>G;

    fin>>W>>P;
    for(int i=W; i<=G; ++i)
        a1[i] = P;

    --N;

    while(N--)
    {
        fin>>W>>P;

        for(int i=1; i<=G; ++i)
        {
            a2[i] = a1[i];
            if(W <= i)
                a2[i] = max(a2[i], a1[i-W] + P);
        }
        cpy();
    }

    fout<<a2[G]<<"\n";

    fin.close(); fout.close();
    return 0;
}