Cod sursa(job #1035649)

Utilizator GabiMMarincu Gabriel GabiM Data 18 noiembrie 2013 18:41:45
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>

using namespace std;

int n,gmax,g[1000],p[1000],sol[10000];

ifstream input("input.in");
ofstream output("output.out");

void read()
{
    int i;
    input >> n >> gmax;
    for (i=1;i<=n;i++)
        input >> g[i] >> p[i];
}

void rucsac()
{
    int i,j,PMax;
    for (i=1;i<=n;i++)
        sol[i] = -1;
    for (i=1;i<=n;i++)
        for (j=gmax;j>=0;j--)
            if (j+g[i]<=gmax&&sol[j]!=-1)
                if (sol[j+g[i]]<sol[j]+p[i])
                    sol[j+g[i]] = sol[j]+p[i];
    for (i=1;i<=gmax;i++)
        if (sol[i]>PMax)
            PMax = sol[i];
    output << PMax;

}

int main()
{
    read();
    rucsac();
    return 0;
}