Cod sursa(job #3217290)

Utilizator AndreibatmanAndrei Croitoriu Andreibatman Data 22 martie 2024 10:23:42
Problema Pairs Scor 50
Compilator cpp-64 Status done
Runda simulare_preoni_ig Marime 0.83 kb
#include <bits/stdc++.h>
#pragma GCC optimize("Ofast,unroll-loops")
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.out");
int n,v[100010],fr[1000010],nr[1000010],pp[1000010],i,maxi,j,cnt,ans;
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i],fr[v[i]]++,maxi=max(maxi,v[i]);
    for(i=2;i<=maxi;i++)
        if(nr[i]==0)
            for(j=i;j<=maxi;j=j+i)
            {
                nr[j]++;
                if(j%(i*i)==0)
                    pp[j]++;
            }
    for(i=2;i<=maxi;i++)
        if(pp[i]==0)
        {
            cnt=0;
            for(j=i;j<=maxi;j=j+i)
                cnt+=fr[j];
            if(nr[i]%2==0)
                ans=ans-cnt*(cnt-1)/2;
            else
                ans=ans+cnt*(cnt-1)/2;
        }
    fout<<n*(n-1)/2-ans;
    return 0;
}