Cod sursa(job #2237468)

Utilizator HoriqHoria Pacurar Horiq Data 1 septembrie 2018 22:58:38
Problema Trapez Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
#include <cmath>
using namespace std;
ifstream fin("trapez.in");
ofstream fout("trapez.out");
const double eps=10e-14;
const double INF=2000000000;
struct POINT
{
    int x,y;
};
double panta(POINT P1,POINT P2)
{
    if(fabs(P2.x-P1.x)<eps)
        return INF;
    else
        return (double)(P2.y-P1.y)/(P2.x-P1.x);
}
POINT P[1001];
double v[1000001];
int main()
{
    int sortat,l=0,s=0,k=1,i,j,n;
    double aux;
    fin>>n;
    for(i=1;i<=n;i++)
    fin>>P[i].x>>P[i].y;
    for(i=1;i<n;i++)
    for(j=i+1;j<=n;j++)
    {
        l++;
        v[l]=panta(P[i],P[j]);
    }
    do
    {
        sortat=1;
        for(i=1;i<l;i++)
            if(v[i]>v[i+1])
        {
            aux=v[i];
            v[i]=v[i+1];
            v[i+1]=aux;
            sortat=0;
        }
    }while(sortat==0);
    for(i=2;i<=l;i++)
        {
            if(fabs(v[i]-v[i-1])<eps)
                k++;
            else
            {
                s=s+(k*(k-1))/2;
                k=1;
            }
        }
        fout<<s;
    return 0;
}