Cod sursa(job #625411)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 24 octombrie 2011 16:58:21
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<fstream>
#include<algorithm>
using namespace std;
int n,m;
struct Punct{int x,y;};
Punct A[1005];
double Panta[1000010];
long long sol;

void Citire()
{
	int i;
	ifstream fin("trapez.in");
	fin>>n;
	for(i=0;i<n;i++)
		fin>>A[i].x>>A[i].y;
	fin.close();
}

void Rezolvare()
{
	int i,j;
	double aux;
	long long nr;
	for(i=0;i<n;i++)
		for(j=i+1;j<n;j++)
		{
			if(A[i].x==A[j].x)
				Panta[m++]=2000000000.0;
			else
			{
				aux=A[i].y-A[j].y;
				aux=aux/(A[i].x-A[j].x);
				Panta[m++]=aux;
			}
		}
	sort(Panta,Panta+m);
	i=0;
	j=0;
	while(i<m)
	{
		while(j<m-1 && Panta[j+1]==Panta[i])
			j++;
		nr=j-i+1;
		sol+=nr*(nr-1)/2;
		i=j+1;
	}
}

void Afisare()
{
	ofstream fout("trapez.out");
	fout<<sol<<"\n";
	fout.close();
}

int main()
{
	Citire();
	Rezolvare();
	Afisare();
	return 0;
}