Cod sursa(job #3173812)

Utilizator TudorNMnegoita tudor mihai TudorNM Data 23 noiembrie 2023 18:58:09
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>

using namespace std;

int rasp[75005],rasp1[75005],rasp2[75005],apar[205];

ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");

int main()
{
    int n,g,nr;
    cin>>n>>g;

    for(int i=1; i<=n; i++)
    {
        cin>>nr;
        apar[nr]++;
    }
    rasp[0]=1;

    int k=200;
    while(k!=0)
    {
        if(apar[k]!=0)
        {
            for(int i=0; i<=g; i++)
            {
                if(i+k<=g && rasp[i]!=0 && rasp[i+k]==0)
                    if(rasp1[i]!=k || rasp2[i]<apar[k])
                    {
                        rasp[i+k]=rasp[i]+1;;
                        rasp1[i+k]=k;
                        if(rasp1[i]==k)
                            rasp2[i+k]=rasp2[i]+1;
                        else
                            rasp2[i+k]=1;
                    }
            }
        }

        k--;
    }

    int m,j=g,var;
    while(rasp[j]==0)
        j--;

    cout<<j<<" "<<rasp[j]-1<<'\n';
    m=rasp[j];

    while(j!=0)
    {
        var=rasp2[j];
        while(rasp2[j]!=0)
        {
            cout<<rasp1[j]<<'\n';
            rasp2[j]--;
        }

        j-=rasp1[j]*var;
    }
    return 0;
}