Cod sursa(job #204648)

Utilizator Pepelea_FlaviuFlaviu Pepelea Pepelea_Flaviu Data 25 august 2008 19:35:00
Problema Medie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
# include <stdio.h>

using namespace std;

# define FIN "medie.in"
# define FOUT "medie.out"
# define MAXN 7001
# define v(i) (V[i]*(V[i]-1)*(V[i]-2)>>1)

int N,i,j,x,Mx = 0;
long long rez = 0;
int V[MAXN];

    int main()
    {
        freopen(FIN,"r",stdin);
        freopen(FOUT,"w",stdout);
        
        scanf("%d",&N);
        for (i = 1; i <= N; ++i)
          {
             scanf("%d",&x);
             if (x > Mx) Mx = x;
             V[x]++;
          }
          
        for (i = 1; i <= Mx; ++i)
          if (V[i] != 0)
            {
               if (V[i] > 2) rez += v(i);
               for (j = i+1; j <= Mx; ++j)
                 if (V[j]!=0&&V[(i+j)/2]!=0&&(i+j)%2==0)
                   rez += V[i]*V[j]*V[(i+j)>>1];
            }
            
        printf("%lld",rez);
        
        return 0;
    }