Cod sursa(job #2073732)

Utilizator BotzkiBotzki Botzki Data 23 noiembrie 2017 16:57:59
Problema Trapez Scor 100
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 ((1.0*p2.y-p1.y)/(p2.x-p1.x));
}

int main()
{
    int i, n, l=1, j;
    long long tr=0;
    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];
               tr=tr+(((l-1)*l)/2);
              l=1;
          }

    }
    tr=tr+(((l-1)*l)/2);
    fout<<tr<<"\n";

    return 0;
}