Cod sursa(job #598781)

Utilizator Smaug-Andrei C. Smaug- Data 27 iunie 2011 01:02:52
Problema Medie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <cstdio>
#include <cstring>

#define MAXN 9005
#define MAXV 7005

inline int max(const int &a, const int &b){
  return ((a>b)?a:b);
}

int main(){

  freopen("medie.in", "r", stdin);
  freopen("medie.out", "w", stdout);

  int N, i, j, cnt, maxv;
  int S[MAXN], F[MAXV];

  memset(F, 0, sizeof(F));
  maxv=0;

  scanf("%d", &N);
  for(i=1; i<=N; i++){
    scanf("%d", S+i);
    F[S[i]]++;
    maxv=max(maxv, S[i]);
  }

  cnt=0;
  for(i=1; i<=maxv; i++){
    // F[i] start points and (F[i]-1)*(F[i]-1)/2 pairs with j<k
    cnt+=(F[i]*(F[i]-1)*(F[i]-2))>>1;
    for(j=i+2; j<=maxv; j+=2)
      cnt+=F[i]*F[j]*F[(i+j)>>1];
  }

  printf("%d\n", cnt);

  return 0;

}