Cod sursa(job #2456410)

Utilizator mihai50000Mihai-Cristian Popescu mihai50000 Data 14 septembrie 2019 12:13:02
Problema Patrate 3 Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("patrate3.in");
ofstream fout("patrate3.out");

const int MOD = (1 << 16) + 1;

vector <pair <int, int> > tab[MOD + 7];

bool cauta(int x, int y)
{
	int r =  x % MOD;
	
	for(int i = 0; i < tab[r].size(); i++)
		if(tab[r][i] == make_pair(x, y))
			return true;
	
	return false;
}

pair <int, int> v[MOD];

main()
{
	int n;
	fin >> n;
	
	for(int i = 1; i <= n; i++)
	{
		double k1, k2;
		fin >> k1 >> k2;
		
		k1 = k1 * 100000;
		k2 = k2 * 100000;
		
		int p1 = k1 + 1e9 + 1;
		int p2 = k2 + 1e9 + 1;
		
		v[i] = {p1, p2};
		
		tab[p1 % MOD].push_back({p1, p2});
	}
	
	int res = 0;
	
	for(int i = 1; i <= n; i++)
		for(int j = i + 1; j <= n; j++)
		{
			int x = v[i].first + v[j].first + v[j].second - v[i].second;
			int y = v[i].second + v[j].second + v[i].first - v[j].first;
			
			x /= 2;
			y /= 2;
			
			bool ok = true;
			
			ok &= cauta(x, y);
			
			x = v[i].first + v[i].second + v[j].first - v[j].second;
			y = v[i].second + v[j].second + v[j].first - v[i].first;
			
			x /= 2;
			y /= 2;
			
			ok &= cauta(x, y);
			
			res += ok;
		}
	
	fout << res / 2;
}