Cod sursa(job #2377657)

Utilizator shantih1Alex S Hill shantih1 Data 10 martie 2019 19:32:41
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

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

int n,i,j,nr,ox,oy,rez;
struct per
{	int x,y; } p[1005];
vector<double> pant;

void add_pant(per a,per b)
{
	double m;
	if(a.y==b.y)
	{	ox++;	return;	}
	if(a.x==b.x)
	{	oy++;	return;	}
	
	m=double(a.y-b.y)/(a.x-b.x);
	pant.push_back(m);
}

int main() {
	
	fin>>n;
	for(i=1;i<=n;i++)
		fin>>p[i].x>>p[i].y;
	
	for(i=1;i<=n;i++)
		for(j=i+1;j<=n;j++)
			add_pant(p[i], p[j]);
	
	sort(pant.begin(),pant.end());
	
	int l=(int)pant.size();
	rez=ox*(ox-1)/2+oy*(oy-1)/2;
	nr=1;
	for(i=1;i<l;i++)
	{
		if(pant[i]==pant[i-1])
			nr++;
		else
		{
			rez+=nr*(nr-1)/2;
			nr=1;
		}
	}
	rez+=nr*(nr-1)/2;
	
	fout<<rez<<"\n";
}