Cod sursa(job #2606220)

Utilizator chiravladChira Vlad chiravlad Data 27 aprilie 2020 12:31:19
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <cstdio>
#include <algorithm>
int x[1005],y[1005];
double s[500001];
int s_size;
const int INF = 2e+9;
double slope(int x1, int y1, int x2, int y2)
{
    if(x1==x2)
        return INF;
    return (double)(((y2-y1))/((double)(x2-x1)));
}

int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int n;
    scanf("%d",&n);
    for(int i = 1; i<=n; i++)
    {
        scanf("%d%d",&x[i],&y[i]);
    }

    for(int i=1; i<n; i++)
        for(int j=i+1; j<=n; j++)
        {
            s[++s_size] = slope(x[i],y[i],x[j],y[j]);
        }
    std::sort(s+1,s+s_size+1);
    long long l=1;
    long long tr=0;
    for(int i=1; i<s_size; i++)
    {

        if(s[i]==s[i-1])
            l++;
        else
        {
            tr+=l*(l-1)/2;
            l=1;
        }
    }

    tr+=l*(l-1)/2;
    printf("%lld",tr);
    return 0;
}