Cod sursa(job #626466)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 27 octombrie 2011 11:00:23
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <fstream>

using namespace std;

struct punct
{
	int x, y;
};
punct a[1005];

int nr, n, np;
double p[1000005];

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

void Rez()
{
	int i, j, k=0;
	for (i=1; i<=n; i++)
		for (j=i+1; j<=n; j++)
			if (a[j].x == a[i].x)
				p[k++] = 2000000000;
			else
				p[k++] = (1.0*(a[j].y - a[i].y))/(1.0*(a[j].x - a[i].x)); // y2-y1/x2-x1
	sort (p, p+k);
	np = k;
	double x;
	
	for (i=0; i<np; )
	{
		x = p[i];
		k=0;
		while (i<np && p[i] == x)
		{
			i++;
			k++;
		}
		nr += (k*(k-1))/2;
	}
}

void Scriere()
{
	ofstream g("trapez.out");
	g<<nr<<"\n";
	g.close();
}

int main ()
{
	Citire();
	Rez();
	Scriere();
	return 0;
}