Cod sursa(job #644697)

Utilizator maritimCristian Lambru maritim Data 7 decembrie 2011 15:05:30
Problema Medie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<stdio.h>
#include<fstream>
using namespace std;

ifstream f("medie.in");
ofstream g("medie.out");

#define MaxN 9010
#define MaxV 14100
#define MaxP 3

int N,MAX,VMax,A[MaxN],V[MaxP][MaxV];

void citire(void)
{
	f >> N;
	for(int i=1;i<=N;i++)
		f >> A[i], VMax < A[i] ? VMax = A[i] : 0;
}

void Punctare(void)
{
	for(int i=1;i<=N;i++)
		V[0][A[i]] ++;
	
	for(int i=1;i<=VMax;i++)
	{
		V[1][i<<1] += V[0][i]*(V[0][i]-1)/2;
		
		for(int j=i+1;j<=VMax;j++)
			if(V[0][j])
				V[1][j+i] += V[0][j]*V[0][i];
	}
}

void Numarare(void)
{
	for(int i=1;i<=N;i++)
		MAX += V[1][A[i]<<1]-V[0][A[i]]+1;
}

int main()
{
	citire();
	Punctare();
	Numarare();
	g << MAX;
	
	return 0;
}