Cod sursa(job #2606230)

Utilizator Laza_AndreiLazarescu Andrei Vlad Laza_Andrei Data 27 aprilie 2020 12:41:11
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;

const double eps=1.0e-14;
const double INF=1.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;
    }
    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 c,s,n,i,j,nr=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[++nr]=panta(v[i],v[j]);
        }
    }
    sort(p+1,p+nr+1);
    c=1;s=0;
    for(i=2;i<=nr;++i){
        if(fabs(p[i]-p[i-1])<eps){
            ++c;
            continue;
        }
        s+=c*(c-1)/2;
        c=1;
    }
    printf("%d",s);
    return 0;
}