Cod sursa(job #953025)

Utilizator primulDarie Sergiu primul Data 24 mai 2013 18:03:44
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<cstdio>
#include<vector>
#include<algorithm>
 
#define NMAX 1005
 
 
FILE *f=fopen("trapez.in","r");
FILE *g=fopen("trapez.out","w");
 
using namespace std;
 
 
int n,Answer,numb;
double slope[500010];
struct point {int x,y;};
point v[NMAX];
inline double Incline ( const point A , const point B )
{
    if(A.x == B.x )
        return 1<<30;
        else
   return (double)( B.y-A.y)/(B.x-A.x);
       
}
 
 
void Read( void )
{
 fscanf(f,"%d",&n);
 for( int i(1) ; i <= n ; ++i )
 {
    fscanf(f,"%d%d",&v[i].x,&v[i].y);
    for(int ii(1) ; ii < i ; ++ii )
        slope[++numb]=Incline(v[i],v[ii]);
 }
  fclose(f);
}
 
void Solve ( void )
{
    sort(slope+1,slope+numb+1);
    int i;
   for( i=1 ; i <= numb; ++i  )
   {
       int start=i;
       ++i;
       while( slope[start] == slope[i] && i <= numb)
       ++i;
       Answer+=(i-start) *( i-start-1 )/2;
       --i;
   }
 
}
void Write ( void )
{
  fprintf(g,"%d",Answer);
  fclose(g);
}
int main ( void )
{
    Read();
    Solve();
    Write();
    return 0;
}