Cod sursa(job #828511)

Utilizator Pop_EmilPal Tamas Pop_Emil Data 3 decembrie 2012 20:58:18
Problema Trapez Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <algorithm>
#include <iostream>
using namespace std;
#include <stdio.h>
#include <math.h>


struct punct
 {
  public:
	  long x,y;
 };

int main()
{

  FILE *in=fopen("trapez.in","r"),*out=fopen("trapez.out","w");

  int N;
  fscanf(in,"%d",&N);
  punct t[N];
  float st[N*(N-1)/2+2];

  for(int i=0;i<N;i++)
    {
		fscanf(in,"%ld",&t[i].x);
		fscanf(in,"%ld",&t[i].y);
    }


long k=0;
 for(int i=0;i<N-1;i++) //1
  for(int j=i+1;j<N;j++)  //2
 {
      if(t[i].y>t[j].y && t[i].x!=t[j].x)
         st[k++]=(float)((float)(t[i].y-t[j].y)/(float)(t[i].x-t[j].x));
       else
       if(t[i].x!=t[j].x)
         st[k++]=(float)((float)(t[j].y-t[i].y)/(float)(t[j].x-t[i].x));

     if(t[i].x==t[j].x)st[k++]=-99999.98;
   }

sort(st,st+k+1);

long R=0;
int e,j;
for(int i=0;i<k-1;i++)
 {
    e=1;

   for( j=i,e=1;st[j]==st[j+1];j++)
       e++;

    R+= e*(e-1)/2;
    i+=e-1;

 }

fprintf(out,"%ld",R);

}