Cod sursa(job #183865)

Utilizator Mishu91Andrei Misarca Mishu91 Data 22 aprilie 2008 17:56:33
Problema Medie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <cstdio>
#define Nmax 9001
#define Vmax 7002

int V[Nmax], N,w[Vmax];

void citire()
{
    scanf("%d",&N);
    for(int i=0; i<N; i++)
        scanf("%d",V+i);
}

void solve()
{
    long long nr = 0;
    int m;

    for(int i=0; i<N; i++)
        w[V[i]]++;
    for(int i=1; i<Vmax-1; i++)
    {
        if(w[i] == 0) continue;
        for(int j=i+1; j<Vmax; j++)
        {
            if(w[j] == 0 || (i + j & 1)) continue;
            if(w[m = (i + j) >> 1])
                nr += w[m];
        }

        if(w[i] > 2)
            nr += ((long long)(w[i] - 2)*(w[i] - 1)*w[i] >> 1);
    }
    printf("%ld\n",nr);
}

int main()
{
    freopen("medie.in","r",stdin);
    freopen("medie.out","w",stdout);
    citire();
    solve();
}