Cod sursa(job #2053330)

Utilizator alexilasiAlex Ilasi alexilasi Data 31 octombrie 2017 17:56:28
Problema Medie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <climits>
#include <algorithm>

using namespace std;

ifstream fin("medie.in");
ofstream fout("medie.out");

int n,x,ans;

int a[9000],v[7001];

int main()
{
    fin>>n;
    for(int i=0;i<n;i++)
    {
        fin>>a[i];
        v[a[i]]++;
    }
    sort(a,a+n);
    for(int i=0;i<n-1;i++)
    {
        if(a[i]==a[i+1])a[i]=INT_MAX,x++;
    }
    sort(a,a+n);
    n-=x;
    for(int i=0;i<n;i++)
    {
        if(v[a[i]]>2)
            ans+=v[a[i]]*(v[a[i]]-1)/2*(v[a[i]]-2);
        if(i<n/2)
        {
            for(int j=0;j<i;j++)
            {
                if(a[i]*2-a[j]<=7000&&v[a[i]*2-a[j]])
                {
                    ans+=v[a[i]]*v[a[i]*2-a[j]];
                }
            }
        }
        else
        {
            for(int j=i+1;j<n;j++)
            {
                if(a[i]*2-a[j]>=0&&v[a[i]*2-a[j]])
                {
                    ans+=v[a[i]]*v[a[i]*2-a[j]];
                }
            }
        }
    }
    fout<<ans<<'\n';
    return 0;
}