Cod sursa(job #296382)

Utilizator ucc_5Usurelu Catalin ucc_5 Data 4 aprilie 2009 18:27:34
Problema Medie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _fin  "medie.in"
#define _fout "medie.out"
# define MaxN 9002
# define MaxX 7002

int a[MaxN],n,rep[MaxX];
long NrSol;

void readf()
{
	int i;
	FILE *fin = fopen(_fin, "r");

	for(fscanf(fin, "%d", &n), i=1; i<=n; i++)
		fscanf(fin, "%d", a+i);

	fclose(fin);
}

void writef()
{
	FILE *fout = fopen(_fout, "w");
	fprintf(fout, "%ld\n", NrSol), fclose(fout);
}
 long v[MaxX];
void search ()
{  int i,j,aux;
  
  # define div2(x) ( ! ((x) & 1) )

	for(i=1; i<n; i++)
	{
		++rep[ a[i] ];

		for(j=i+1; j<=n; j++)
			if ( div2( aux=a[i]+a[j] ) )
				++v[aux>>1];
	}

	++rep[a[n]];

	for(i=1; i<=n; i++)
		if ( v[ a[i] ] )
			NrSol += long( v[ a[i] ] - rep[ a[i] ] + 1 );
}



int main ()
{ readf();
  search ();
  writef ();
  return 0;
}