Cod sursa(job #2608915)

Utilizator As932Stanciu Andreea As932 Data 1 mai 2020 21:03:53
Problema Indep Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.66 kb
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;

int teste,n,k,v[105],fq[105];
vector <int> nr;

int main()
{
    cin>>teste;

    while(teste--)
    {
        cin>>n>>k;

        int dif=0;

        memset(fq,0,sizeof (fq));

        if(n==k)
        {
            for(int i=1;i<=n;i++)
                cin>>v[i];

            cout<<n<<"\n";

            for(int i=1;i<=n;i++)
                cout<<v[i]<<" ";
        }
        else
        {
            for(int i=1;i<=n;i++)
            {
                cin>>v[i];

                if(fq[v[i]]==0)dif++;

                fq[v[i]]++;
            }

            if(dif==1)
            {
                cout<<n<<"\n";
                for(int i=1;i<=n;i++)
                    cout<<v[i]<<" ";
            }
            if(dif>k)
                cout<<"-1";
            else
            {
                nr.clear();

                int mx=0,ad=0;

                if(dif<k)
                    ad=k-dif;

                for(int i=1;i<=100;i++)
                    if(fq[i])
                    {
                        mx=max(mx,fq[i]);
                        nr.push_back(i);
                    }
                    else if(!fq[i] && ad)
                    {
                        --ad;
                        nr.push_back(i);
                        dif++;
                    }

                cout<<(mx+1)*dif<<"\n";

                for(int i=1;i<=mx+1;i++)
                    for(int j=0;j<nr.size();j++)
                        cout<<nr[j]<<" ";
            }
        }

        cout<<"\n";
    }

    return 0;
}