Cod sursa(job #2594673)

Utilizator mirceamaierean41Mircea Maierean mirceamaierean41 Data 6 aprilie 2020 15:10:57
Problema Trapez Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <cmath>
#define x first
#define y second
using namespace std;

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

vector <double> panta;

const double eps = 1e-6;
typedef pair <int, int> p;

vector <p> v;
int n, paral;

inline bool equal(double a)
{
	return abs(a) < eps;
}

int main()
{
	fin >> n;
	v.resize(n);

	for (int i = 0; i < n; ++i)
	{
		fin >> v[i].x >> v[i].y;
		for (int j = 0; j < i; ++j)
		{
			double r;
			if (v[i].x != v[j].x)
			{
				double sus = v[i].y - v[j].y, jos = v[i].x - v[j].x;
				r = sus / jos;
				panta.push_back(r);
			}
			else paral++;
		}
	}

	sort(panta.begin(), panta.end());

	int i = 1, cnt = ((paral * (paral - 1)) >> 1) , crt;

	while (i < n)
	{
		crt = 1;
		while (i < n && equal(panta[i] - panta[i - 1]))
		{
			++crt;
			++i;
		}
		++i;
		cnt += ((crt * (crt - 1)) >> 1);
	}

	fout << cnt << "\n";

	return 0;
}