Cod sursa(job #3189912)

Utilizator CraiuAndreiCraiu Andrei David CraiuAndrei Data 6 ianuarie 2024 17:41:20
Problema Medie Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream fin("medie.in");
ofstream fout("medie.out");

int n, v[9001], sol, fr[7001];

int CB(int x)
{
	int st, dr, mij;
	st = 1, dr = n;
	while (st <= dr)
	{
		mij = (st + dr) / 2;
		if (v[mij] == x)
		{
			cout << x << "\n";
			return 1;
		}
		else if (v[mij] < x)st = mij + 1;
		else dr = mij - 1;
	}
	return 0;
}

int main()
{
	int i, j, x;
	fin >> n;
	for (i = 1; i <= n; i++)
	{
		fin >> v[i];
		fr[v[i]]++;
	}
	sort(v + 1, v + 1 + n);
	for (i = 1; i <= n; i++)
		for (j = i + 1; j <= n; j++)
			if ((v[i] + v[j]) % 2 == 0)
			{
				x = (v[i] + v[j]) / 2;
				if (v[x] == v[i] && v[x] == v[j])sol = sol + CB(x) * (fr[x] - 2);
				else if (v[x] == v[i] || v[x] == v[j])sol = sol + CB(x) * (fr[x] - 1);
				else sol = sol + CB(x) * fr[x];
			}
	fout << sol;
	return 0;
}