Cod sursa(job #1851960)

Utilizator VasilescuVasilescu Eliza Vasilescu Data 20 ianuarie 2017 12:55:40
Problema Heavy metal Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <cstdio>

using namespace std;

bool a[100005];

int main()
{
    FILE *fin, *fout;
    fin=fopen("minlcm.in", "r");
    fout=fopen("minlcm.out", "w");

    int t, n, prec, d, i, x, maxim, nr;
    long long minim, min1, min2;

    fscanf(fin, "%d", &t);
    prec=0;
    while(t)
    {
        for(i=1; i<=prec; i++) a[i]=false;
        fscanf(fin, "%d", &n);
        minim=(1ll << 50);
        maxim=-100;
        for(i=1; i<=n; i++)
        {
            fscanf(fin, "%d", &nr);
            if(nr>maxim)maxim=nr;
            a[nr] = true;
        }
        for(d=1; d<=maxim; d++)
        {
            min1 = min2 = -1;
            for(x=d; x<=maxim; x+=d)
            {
                if(a[x])
                {
                    if (min1 == -1)
                        min1=x;
                    else if(min2== -1)
                        min2=x;
                }
            }
            if(min1*min2/d<minim && min1!=-1 && min2!=-1)
                minim=min1*min2/d;
        }
        fprintf(fout, "%lld\n", minim);
        prec=n;
        t--;
    }
    return 0;
}