Cod sursa(job #2554357)

Utilizator MirunaStefaniaLupascu Miruna-Stefania MirunaStefania Data 22 februarie 2020 20:19:55
Problema Evaluarea unei expresii Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include<fstream>
#define N 1000005
using namespace std;
ifstream fin("cmmdc2.in");
ofstream fout("cmmdc2.out");

int M;
int f[N];//de frecv
int n,k;

int main()
{
    int i,x,j,ii,ct;
    fin>>n>>k;
    for(i=1;i<=n;++i)
    {
        fin>>x;
        f[x]++;//valorile se pot repeta
        M=max(x,M);
    }
    //divizorul maxim nu poate fi mai mare decat maximul din sir
    for(i=M;i>=1;--i)
    {
        ct=0;
        //pp ca el este divizorul maxim
        //parcurgem toti multiplii lui
        for(j=i;j<=M;j=j+i)//vedem cati se afla in sir
            ct+=f[j];
        if(ct>=k)//daca satisface conditia
            {
                fout<<i<<"\n";
                //SAU CA SA PLEC DE LA CEL MAI MARE MULTIPLU A LUI X MAI MIC DECAT M
                //POT PLECA DE LA M/X*X -->(va face partea intreaga)
                for(j=M;j>=1&&k;j--)//le afisam pe cele mai mari ca sa fie si suma maxima
                    if(j%i==0)
                    for(ii=1;ii<=f[j]&&k;++ii)
                {
                    fout<<j<<" ";
                    k--;
                }

                break;//am gasit cmmdc
            }
    }

    return 0;
}