Cod sursa(job #1373327)

Utilizator adina0822Ciubotaru Adina-Maria adina0822 Data 4 martie 2015 18:05:15
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
using namespace std;
#include <fstream>
ifstream f ("rucsac.in");
ofstream g ("rucsac.out");

int n,gmax,gr[5001],c[5001],cmax[10001],use[10001][5001];



int main ()
{
    int i,j,k,s;
    f>>n>>gmax;

    for(i=1; i<=n; i++)
    f>>gr[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(gr[i]<=s  && !use[s-gr[i]][i] && cmax[s-gr[i]]!=-1 &&cmax[s]<cmax[s-gr[i]]+c[i])
            {
                cmax[s]=cmax[s-gr[i]]+c[i];

                for (k=1; k<=n; k++)
                use[s][k]=use[s-gr[i]][k];
                use[s][i]=1;

            }
        }
    }

    if (cmax[gmax]==-1) g<<"IMPOSIBIL";
    else
    {
        g<<cmax[gmax]<<'\n';
       /*
         for (i=1; i<=n; i++)
            if (use[gmax][i]) g<<i<<" ";
        */

    }

    return 0;
}