Cod sursa(job #1788754)

Utilizator AnduB08Boldisor Andu AnduB08 Data 26 octombrie 2016 13:34:30
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <algorithm>
#define lim 75005
#define gr 205

using namespace std;

ifstream fin ("ghiozdan.in");
ofstream fout("ghiozdan.out");

int n,g,d[lim],b[lim],fr[gr],ob,i,j,k;

int main()
{
    fin >> n >> g;

    for (i=1;i<=n;i++)
    {
        fin >> ob;
        fr[ob]++;
    }
 d[0]=1;
    for (k=g;k>=1;k--)
    {
        if (fr[k])
        {
            for (i=g-k ; i>=0 ; i-- )
            {
                if (d[i])
                {
                    for (j=1 ; j<=fr[k] && i+j*k<=g && d[i+j*k]==0 ; j++ )
                    {
                        d[i+j*k]=d[i]+j;
                        b[i+j*k]=k;
                    }
                }
            }
        }
    }
    for (i=g;i>=1;i--)
    {
        if (d[i]!=0)
        {
            fout << i <<' '<<d[i]-1<<'\n';


            while (i)
            {
                fout << b[i]<<'\n';
                i-=b[i];
            }
        }
    }


    return 0;
}