Cod sursa(job #2606222)

Utilizator cyg_alexandru546Zob Alexandru Mihai cyg_alexandru546 Data 27 aprilie 2020 12:34:13
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.22 kb
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
const double eps=1.0e-14;
const double INF=2.0e+9;
struct POINT{
    int x,y;
}v[1005];
double p[500000];
double panta(POINT P1,POINT P2)
{
    if(P1.x==P2.x)
        return INF;
    else
        return (1.0*P2.y-P1.y)/(1.0*P2.x-P1.x);
}
int main()
{
            freopen("trapez.in","r",stdin);
            freopen("trapez.out","w",stdout);
            int n,i,j,m=0,cnt,trapeze=0;
            scanf("%d",&n);
            for(i=1;i<=n;i++)
            {
                scanf("%d%d",&v[i].x,&v[i].y);
            }
            for(i=1;i<n;i++)
                for(j=i+1;j<=n;j++)
                {
                    p[++m]=panta(v[i],v[j]);
                }
            sort(p+1,p+m+1);
            cnt=1;
            for(i=1;i<m;i++)
            {
                if(fabs(p[i]-p[i-1])<eps)
                {
                    cnt++;
                    continue;
                }
                else
                {

                    if(cnt>1)
                        trapeze+=cnt*(cnt-1)/2;
                    cnt=1;
                }
            }
            printf("%d\n",trapeze);
            return 0;
}