Cod sursa(job #1015527)

Utilizator mvcl3Marian Iacob mvcl3 Data 24 octombrie 2013 19:58:37
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#define in "rucsac.in"
#define out "rucsac.out"
#define oo 1000000
#define Max_Size 20009

int N, G, Max_c, Sol;
int DP[Max_Size];

struct obj
{
    int _w;
    int _c;
}   P[Max_Size / 2];

inline void Read_Data()
{
    std :: ifstream f(in);
    f >> N >> G;

    for(int i = 1; i <= N; ++i)
    {
        f >> P[i]._c >> P[i]._w;
        Max_c = std :: max(Max_c, P[i]._c);
    }
}

inline void Solve()
{
    for(int i = 1; i <= N; ++i)
        for(int j = G - P[i]._c; j >= 0; --j)
            if(DP[j + P[i]._c] < DP[j] + P[i]._w)
                DP[j + P[i]._c] = DP[j] + P[i]._w;

    for(int i = 0; i <= G; ++i)
        Sol = std :: max(Sol, DP[i]);
}

int main()
{
    Read_Data();
    Solve();

    std :: ofstream g(out);
    g << Sol << '\n';

    g.close();
    return 0;
}