Cod sursa(job #66401)

Utilizator Adriana_SAdriana Sperlea Adriana_S Data 18 iunie 2007 11:26:06
Problema Medie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>

const int N_MAX = 9010;

int v[N_MAX], is[N_MAX];

int main()
{
	freopen("medie.in", "r", stdin);
#ifndef _SCREEN_
	freopen("medie.out", "w", stdout);
#endif

	int N, i, j, MAX = 0;

	scanf("%d\n", &N);
	for (i = 1; i <= N; i ++) {
		scanf("%d\n", &v[i]);
		is[v[i]] ++;
		if (v[i] > MAX) {
			MAX = v[i];
		}
	}

	int med = 0;
   
	long long nr = 0;

	for (i = 1; i <= MAX; i ++) {

		nr += is[i] * ((is[i] - 2) * (is[i] - 1) / 2);

		for (j = i + 1; j <= MAX; j ++) {

			if (is[i] && is[j] && !((i + j) & 1)) {
				med = (i + j) >> 1;
				if (is[med]) {
					nr += ((is[i] - (med == i)) * (is[j] - (med == j) - (j == i)) * is[med]);
				}
			}
		}
	}

	printf("%lld\n", nr);

	return 0;
}