Cod sursa(job #2237731)

Utilizator ipop20Ioana Popescu ipop20 Data 2 septembrie 2018 20:23:04
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.15 kb
#include <fstream>
#include <math.h>

using namespace std;
ifstream fin ("trapez.in");
ofstream fout ("trapez.out");
struct POINT
{
    double x,y;
};
double dist (POINT P1, POINT P2)
{
  return sqrt((P1.x-P2.x)*(P1.x-P2.x)+(P1.y-P2.y)*(P1.y-P2.y));
};
float panta (POINT P1,POINT P2)
{
   return (P1.x-P2.x)/(P1.y-P2.y);
};
int main()
{
    int N,tx,ty,i,r=1,tr=0,j,vert=0,oriz=0;
    int pan[50000];
    POINT p[1000];
    fin>>N;
    for(i=1;i<=N;i++)
    {
       fin>>tx>>ty;
       p[i].x=tx;p[i].y=ty;
    }
    for(i=1;i<N;i++)
    {
       for(j=i+1;i<=N;i++)
       {
           if(p[i].x==p[j].x)
             vert++;
           else
            {
                if(p[i].y==p[j].y)
                    oriz++;
                else
                   {
                       pan[r]=panta(p[i],p[j]);
                                   r++;
                   }
            }
       }
    }
    for(i=1;i<r-1;i++)
    {
        for(j=i+1;j<r;j++)
        {
            if(i!=j && pan[i]==pan[j])
                tr++;
        }
    }
    tr=tr+vert*(vert-1)*0.5+oriz*(oriz-1)*0.5;
    fout<<tr;
    return 0;
}