Cod sursa(job #2286343)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 20 noiembrie 2018 10:19:29
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("trapez.in");
ofstream g("trapez.out");
int n,nr,nrc,rez;
struct punct
{
    int x,y;
};
punct a[1005];
struct panta
{
    long long py,px;
};
panta v[1005*1005];
inline bool cmp(const punct &p,const punct &q)
{
    if(p.x==q.x)
    {
        return p.y<q.y;
    }
    else
    {
        return p.x<q.x;
    }
}
inline bool comp(const panta &p,const panta &q)
{
    return p.py*q.px<p.px*q.py;
}
int main()
{
    int i,j;
    f>>n;
    for(i=1;i<=n;i++)
    {
        f>>a[i].x>>a[i].y;
    }
    sort(a+1,a+n+1,cmp);
    for(i=1;i<=n;i++)
    {
        for(j=i+1;j<=n;j++)
        {
            nr++;
            v[nr].py=a[j].y-a[i].y;
            v[nr].px=a[j].x-a[i].x;
        }
    }
    sort(v+1,v+nr+1,comp);
    for(i=1;i<=nr;i++)
    {
        j=i;
        nrc=0;
        while(j<=nr && v[i].py*v[j].px==v[i].px*v[j].py)
        {
            nrc++;
            j=j+1;
        }
        i=j-1;
        rez=rez+nrc*(nrc-1)/2;
    }
    g<<rez;
    return 0;
}