Cod sursa(job #183872)

Utilizator Mishu91Andrei Misarca Mishu91 Data 22 aprilie 2008 18:03:47
Problema Medie Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 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)
        {
            long long a = w[i], b=w[i]-1, c=w[i]-2;
            if(!(a&1))
                a >>= 1;
            else
            if(!(b&1))
                b >>= 1;
            else
            if(!(c&1))
                c >>= 1;

            nr = a*b*c;
        }
    }
    printf("%lld\n",nr);
}

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