Cod sursa(job #3285421)

Utilizator stanciuvalentinStanciu-Tivlea Valentin Gabriel stanciuvalentin Data 12 martie 2025 20:45:32
Problema Ghiozdan Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.17 kb
//tent
#include <bits/stdc++.h>
#define pii pair<int,int>

using namespace std;

ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");

int n,x,y,z,gmax,bk[75200],ap[220],apbk[75200];
vector <pii> v[75200];

int32_t main()
{
    f>>n>>gmax;
    for(int i=1; i<=n; i++)
        f>>x, ap[x]++;
    for(int i=1; i<=gmax; i++)
        bk[i]=INT_MAX;
    for(int i=200; i>=1; i--)
    {
        for(int j=0; j<=gmax; j++)
            if(bk[j]!=INT_MAX)
                apbk[j]=0;
            else
                apbk[j]=20200;
        if(ap[i])
        {
            for(int j=i; j<=gmax; j++)
            {
                if(bk[j-i]!=INT_MAX and apbk[j-i]<ap[i])
                {
                    apbk[j]=min(apbk[j],apbk[j-i]+1);
                    if(bk[j-i]+1<bk[j])
                        bk[j]=bk[j-i]+1, v[j]=v[j-i*apbk[j]], v[j].push_back({i,apbk[j]});
                }
            }
        }
    }
    int i=gmax;
    for(; i>=1; i--)
        if(bk[i]!=INT_MAX)
            {g<<i<<' '; break;}
    g<<v[i].size()<<'\n';
    for(auto it:v[i])
        for(int j=1; j<=it.second; j++)
            g<<it.first<<'\n';
    return 0;
}