Cod sursa(job #2447079)

Utilizator valentinchipuc123Valentin Chipuc valentinchipuc123 Data 11 august 2019 23:50:47
Problema Pairs Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

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

long long n, x, maxi, ciur[1000002], rez;
bool ok[1000002], isInArray[1000002];

int main()
{
f>>n;
  for (int i = 1; i <= n; ++i)
    {
        f>> x;
        isInArray[x] = true;
        maxi = max(maxi, x);
    }
    for (int i = 2; i <= maxi; ++i)
    {
        if (!ciur[i])
        {
            for (int j = i; j <= maxi; j += i)
            {
                ++ciur[j];
                if (j % (i * i) == 0)
                    ok[j] = true;
            }
        }
    }
    for (int i = 2; i <= maxi; ++i)
    {
        if (!ok[i])
        {
            long long d = 0;
            for (int j = i; j <= maxi; j += i)
            {
                if (isInArray[j]) ++d;
            }
            if (ciur[i] % 2 == 1) rez = rez + 1LL * (d * (d - 1)) / 2;
            else rez = rez - 1LL * (d * (d - 1)) / 2;

        }
    }
    g << 1LL * (n * (n - 1)) / 2 - rez;
    return 0;
}