Cod sursa(job #1007120)

Utilizator cdascaluDascalu Cristian cdascalu Data 8 octombrie 2013 12:26:20
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include <iostream>
#include <fstream>
#define Nmax 5001
#define Gmax 10001
#define BLA -0x3f3f3f3f
using namespace std;

int N,G;
int g[Nmax];
int p[Nmax];
int sol[Gmax], P=-1;
void read()
{
    ifstream f("rucsac.in");
    f>>N>>G;
    for(int i=1;i<=N;++i)
        f>>g[i]>>p[i];
    f.close();
}
void solve()
{
    int i,j,best;
    for(i=1;i<=G;++i)
        sol[i] = BLA;

    for(i=1;i<=N;++i)
        for(j=G - g[i];j>=0;--j)
            if(sol[j] != BLA && sol[j] + p[i] > sol[j + g[i]])
            {
                sol[j + g[i]] = sol[j] + p[i];
                P = max(P, sol[j + g[i]]);
            }
}
void write()
{
    ofstream g("rucsac.out");
    g<<P<<"\n";
    g.close();
}
int main()
{
    read();
    solve();
    write();
    return 0;
}