Cod sursa(job #2358612)

Utilizator diviadivia negoescu divia Data 28 februarie 2019 10:42:00
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream>
#define NMAX 1000*1000
#include <cmath>
#include <algorithm>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
double pante[NMAX];
struct coord
{
    int x;
    int y;
};
coord v[1005];
const double INF=2000000000;
const double eps=1.0e-12;
int n, nrp;
int total;
double panta(coord p1, coord p2)
{
    double dif=p2.x-p1.x;
    if(dif<0)
    {
        dif=-dif;
    }
    if(dif<eps)
    {
        return INF;
    }
    return (double)(p2.y-p1.y)/(p2.x-p1.x);
}

int main()
{
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        fin>>v[i].x>>v[i].y;
    }
    fin.close();
    for(int i=1; i<n; i++)
    {
        for(int j=i+1; j<=n; j++)
        {
            double p=panta(v[i], v[j]);
            nrp++;
            pante[nrp]=p;
        }

    }
    sort(pante+1, pante+nrp+1);
    /*
    for(int i=1; i<=n; i++)
    {
        fout<<pante<<" ";
    }
    */
    int l=1;
    for(int i=2; i<=nrp; i++)
    {
        if(fabs(pante[i-1]-pante[i])<eps)
        {
            l++;
        }
        else
        {
            total+=(l-1)*l/2;
            l=1;
        }
    }
    if(l>1)
    {
        total+=(l-1)*l/2;
    }
    fout<<total;
    return 0;
}