Cod sursa(job #130919)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 2 februarie 2008 16:16:10
Problema Trapez Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <fstream.h>
#include <math.h>

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

double x[1005],y[1005];
double m[1000005];

int n;
long nr,num;

void citire()
{
   fin>>n;
   for (int i=0;i<n;i++)
      fin>>x[i]>>y[i];
   fin.close();
}

void bule()
{

}

void panta ()
{
   long ox=0,oy=0;
   for (int i=0;i<n-1;i++)
      for (int j=i+1;j<n;j++)
	 if (x[i]==x[j])
	    ox++;
	 else
	   if (y[i]==y[j])
	      oy++;
	   else
	      m[num++]=(y[i]-y[j])/(x[i]-x[j]);
   nr+=ox*(ox-1)/2;
   nr+=oy*(oy-1)/2;
   for (int k=0;k<num;k++)
      if (m[k]!=-10000)
      {
	 int nur=1;
	 for (int h=k+1;h<num;h++)
	    if (fabs(m[k]-m[h])<0.000001)
	    {
		nur++;
		m[h]=-10000;
	    }
      nr+=nur*(nur-1)/2;
      }
}

int main ()
{
   citire();
   panta();
   fout<<nr<<"\n";
   fout.close();
   return 0;
}