Cod sursa(job #881809)

Utilizator mihai.plesaPlesa Mihail Iulian mihai.plesa Data 18 februarie 2013 17:25:36
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;
fstream f,h;
int c[500],g[500],CMax[50],Uz[500][500],n,GMax;
void citire()
{
    f.open("rucsac.in",ios::in);
    int i,j;
    f>>n>>GMax;
    for(i=1; i<=n; i++)
        f>>g[i]>>c[i];
}
void rezolvare()
{
    int S,k,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 && CMax[S-g[i]]!=-1 && !Uz[S-g[i]][i])
        if(CMax[S]<c[i]+CMax[S-g[i]])
    {
        CMax[S]=c[i]+CMax[S-g[i]];
        for(k=1; k<=n; k++)
            Uz[S][k]=Uz[S-g[i]][k];
        Uz[S][i]=1;
    }

}
void afisare()
{
    h.open("rucsac.out",ios::out);
    h<<CMax[GMax];
}
int main()
{
    citire();
    rezolvare();
    afisare();
}