Cod sursa(job #2068180)

Utilizator BotzkiBotzki Botzki Data 17 noiembrie 2017 12:31:13
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <fstream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
const double eps=1.0e-14;
const double INF=2.0e9;
struct POINT
{
    int x, y;
};
vector<POINT>puncte;
vector <double>pante;
bool vertical(POINT p1, POINT p2)
{
    return fabs(p1.x-p2.x)<eps;
}
double panta(POINT p1, POINT p2)
{
    if(vertical(p1, p2))
        return INF;
    return ((p1.y-p2.y)/(p2.x-p1.x));
}

int main()
{
    int i, n, tr=0, l=1, j;
    double m;
    POINT p;
    fin>>n;
    for(i=1;i<=n;i++)
    {
        fin>>p.x>>p.y;
        puncte.push_back(p);

    }
    for(i=0;i<puncte.size()-1;i++)
    {
        for(j=i+1;j<puncte.size();j++)
        {
            m=panta(puncte[i], puncte[j]);
            pante.push_back(m);

        }
    }
    sort(pante.begin(), pante.end());
    m=pante[0];
    for(i=1;i<pante.size();i++)
    {
          if(fabs(pante[i]-m)<eps)
             l=l+1;
          else
          {
              m=pante[i];
              if(l>1)
                l=l/2;
               tr=tr+(((l-1)*l)/2);
             l=1;
          }

    }
    fout<<tr<<"\n";

    return 0;
}