Cod sursa(job #1489574)

Utilizator GeanaVladGeana Vlad GeanaVlad Data 21 septembrie 2015 17:51:38
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>
#include<iostream>
using namespace std;
ifstream f("rucsac.in");
ofstream f1("rucsac.out");
int n,Gmax,S,i,g[5001],c[5001],Cmax[10002],Uz[10002][5001],k;
int main()
{
    f>>n>>Gmax;
    for(i=1;i<=2*n;i++) f>>g[i]>>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 && Cmax[S-g[i]]!=-1 && !Uz[S-g[i]][i])
            if(c[i]+Cmax[S-g[i]]>Cmax[S])
            {
                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;
            }
    if(Cmax[Gmax]==-1) f1<<"Imposibil";
    else f1<<Cmax[Gmax];

}