Cod sursa(job #2868948)

Utilizator alexdmnDamian Alexandru alexdmn Data 11 martie 2022 11:48:15
Problema Medie Scor 30
Compilator cpp-64 Status done
Runda dimineata_dulceata Marime 0.78 kb
#include <fstream>

using namespace std;
int f[7005], v[9005], m[9005];
int main()
{
	ifstream cin("medie.in");
	ofstream cout("medie.out");

    int n, a, h=1, st, dr, mid, cnt=0, cz;
    double p;
    cin>>n;

    for(int i=1;i<=n;i++)
	{
		cin>>v[i];
		f[v[i]]++;
	}
	for(int i=1;i<7005;i++)
	{
		if(f[i]>0)
		{
			m[h]=i;
			h++;
		}
	}

	for(int i=1;i<=n;i++)
	{
        for(int j=i+1;j<=n;j++)
		{
			p=v[i]+v[j];
			p/=2;
			st=1;
			dr=h-1;
			while(st<=dr)
			{
				mid=(dr-st)/2+st;
				if(m[mid]<p)
					st=mid+1;
				else if(m[mid]>p)
					dr=mid-1;
				else
				{
					cz=0;
					if(v[i]==m[mid])
						cz++;
					if(v[j]==m[mid])
						cz++;
					cnt+=f[m[mid]]-cz;
					break;
				}
			}
		}
	}
    cout<<cnt;

    return 0;
}