Cod sursa(job #1981403)

Utilizator andrei20003Ionescu Andrei andrei20003 Data 15 mai 2017 16:54:13
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
struct POINT
{
    int x,y;
};
vector<POINT>v;
const double eps=1.e-14;
const double INF=2000000000;
double panta (POINT A,POINT B)
{
    if (A.x==B.x)
      return INF;
    else return (1.0*B.y-A.y)/(B.x-A.x);
}
vector <double>p;
int main()
{
    freopen ("trapez.in","r",stdin);
    freopen ("trapez.out","w",stdout);
    int n,tempx,tempy,i,j,tr=0,nr;
    POINT aux;
    scanf ("%d",&n);
    for (i=1;i<=n;i++)
    {
        scanf ("%d%d",&tempx,&tempy);
        aux.x=tempx;
        aux.y=tempy;
        v.push_back(aux);
    }
    for (i=0;i<n;i++)
      for (j=i+1;j<n;j++)
          p.push_back(panta(v[i],v[j]));
    sort(p.begin(),p.end());
    nr=1;
    for (i=0;i<p.size()-1;i++)
    {
      if (p[i]==p[i+1])
        nr++;
      else tr+=nr*(nr-1)/2,nr=1;
    }
    printf ("%d ", tr);
    return 0;
}