Cod sursa(job #2004383)

Utilizator victoreVictor Popa victore Data 25 iulie 2017 18:42:28
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<cstdio>
#include<cmath>
#include<algorithm>

using namespace std;

const int nmax=1005;
const int inf=2e9+5;

struct point
{
    int x,y;
}p[nmax];

double pante[(nmax*(nmax-1))>>1];
int top;

int main()
{
    freopen("trapez.in","r",stdin);
    freopen("trapez.out","w",stdout);
    int n,i,j;
    scanf("%d",&n);
    for(i=1;i<=n;++i)
        scanf("%d%d",&p[i].x,&p[i].y);
    for(i=1;i<=n;++i)
        for(j=i+1;j<=n;++j)
            if(p[i].x==p[j].x)
            {
                if(p[j].y>p[i].y)
                    pante[++top]=inf;
                else
                    pante[++top]=-1*inf;
            }
            else
                pante[++top]=(double)(p[j].y-p[i].y)/(p[j].x-p[i].x);
    sort(pante+1,pante+top+1);
    long long sol=0,nr;
    for(i=1,nr=1;i<=top;++i)
        if(pante[i] == pante[i-1])
            nr++;
        else
            sol+=(nr*(nr-1)),nr=1;
    printf("%lld",sol/2);
}