Cod sursa(job #3226653)

Utilizator Theo20067Cismaru Theodor-Alexe Theo20067 Data 22 aprilie 2024 14:03:19
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n,G,i,g,x,j,F[201],D[75003],l;
pair <int,int> T[75003];
int main()
{
    fin>>n>>G;
    for(i=1;i<=n;i++)
    {
        fin>>x;
        F[x]++;
    }
    for(i=200;i>=1;i--)
        if(F[i])
            for(j=G;j>0;j--)
                if(!D[j])
                    for(l=1;l<=F[i];l++)
                    {
                        if(j-l*i<0)
                            break;
                        if(D[j-l*i]||j-l*i==0)
                        {
                            D[j]=D[j-l*i]+l;
                            T[j]={i,l};
                            break;
                        }
                    }
    g=G;
    while(!D[g--]);
    g++;
    fout<<g<<' '<<D[g]<<'\n';
    while(g)
    {
        for(j=1;j<=T[g].second;j++)
            fout<<T[g].first<<'\n';
        g-=T[g].first*T[g].second;
    }
    return 0;
}