Cod sursa(job #1097274)

Utilizator Maxim97Maxim Andrei Maxim97 Data 3 februarie 2014 11:44:16
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include <fstream>

using namespace std;

int g[5001];
int p[5001];
int n, Gmax;
int Pmax[2][10001];
int maxim;

void cit()
{
    int i;
    ifstream in("rucsac.in");
    in>>n>>Gmax;
    for(i=1;i<=n;i++)
        in>>g[i]>>p[i];
    in.close();
}

void pd()
{
    int i,G;
    for(G=1;G<=Gmax;G++)
    {
        if(g[1]<=G)
            Pmax[0][G]=p[1],maxim=p[1];
    }
    for(i=2;i<=n;i++)
    {
        for(G=2;G<=Gmax;G++)
        {
            Pmax[1][G]=Pmax[0][G];
            if(g[i]<=G && p[i]+Pmax[0][G-g[i]]>Pmax[1][G])
                Pmax[1][G]=p[i]+Pmax[0][G-g[i]];
            maxim=(maxim>Pmax[1][G])?maxim:Pmax[1][G];
        }
        for(G=2;G<=Gmax;G++)
            Pmax[0][G]=Pmax[1][G];
    }
    ofstream o("rucsac.out");
    o<<maxim<<'\n';
    o.close();
}

int main()
{
    cit();
    pd();
    return 0;
}