Cod sursa(job #2447275)

Utilizator Stefan_PiscuPiscu Stefan Constantin Stefan_Piscu Data 12 august 2019 17:37:09
Problema Trapez Scor 20
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb

#include <fstream>
#include <algorithm>
using namespace std;

ifstream fin("trapez.in");
ofstream fout("trapez.out");

struct point{
                int x, y;
            }v[1001];

struct rap{
              int a, b;
              // a/b;
          }r[1000003];

int n, k;

bool cmp(rap x, rap y)
{
    return 1LL*x.a*y.b<1LL*x.b*y.a;
}

bool iseq(rap x, rap y)
{
    return 1LL*x.a*y.b==1LL*x.b*y.a;
}

int main()
{
    fin>>n;
    for(int i=1;i<=n;++i) fin>>v[i].x>>v[i].y;
    for(int i=1;i<=n;++i)
        for(int j=i+1;j<=n;++j)
        {
            if(v[j].x-v[i].x==0) r[++k].a=2e9, r[k].b=1;
            else
            {
                r[++k].a=v[j].y-v[i].y;
                r[k].b=v[j].x-v[i].x;
            }
        }
    sort(r+1, r+k+1, cmp);
    int nr=1, sol=0;
    for(int i=2;i<=k;++i)
    {
        if(iseq(r[i], r[i-1])) nr++;
        else
        {
            sol+=(nr*(nr-1))/2;
            nr=1;
        }
    }
    sol+=(nr*(nr-1))/2;
    fout<<sol<<"\n";
    return 0;
}