Cod sursa(job #1245647)

Utilizator delia_99Delia Draghici delia_99 Data 19 octombrie 2014 19:37:35
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;
ifstream f("rucsac.in");
ofstream o("rucsac.out");
int n,gmax,g[5005],c[5005],s,cmax[10005],uz[10005][5005],i,j;
int main()
{
    f>>n>>gmax;
    for(i=1; i<=n; ++i)
        f>>g[i],f>>c[i];

    for(s=1; s<=gmax; ++s)
        cmax[s]=-1;
    for(s=1; s<=gmax; ++s)
        for(i=1; i<=n; ++i)
        {
            if(g[i]<=s&& !uz[s-g[i]][i]&&cmax[s-g[i]]!=-1)
                if(cmax[s]<cmax[s-g[i]]+c[i])
                {
                    cmax[s]=cmax[s-g[i]]+c[i];
                    for(j=1; j<=n; ++j)
                        uz[s][j]=uz[s-g[i]][j];
                    uz[s][i]=1;
                }
        }
    o<<cmax[gmax]<<'\n';
    return 0;
}