Cod sursa(job #2791245)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 30 octombrie 2021 11:47:22
Problema Trapez Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int n,k=1,cont;
int nr;
struct point {double x,y;} p[1010];
double m[500510];
long long  nrpz = 0;
int main()
{
    ifstream f("trapez.in");
    ofstream g("trapez.out");
    f>>n;
    for(int i=1;i<=n;i++) f>>p[i].x>>p[i].y;
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
        {
            if(p[i].y - p[j].y == 0)
                nrpz++;
            else
            {
                nr++;
                m[nr]=(double)((p[i].x-p[j].x)/(p[i].y-p[j].y));
            }
        }

    long long rez = (nrpz*(nrpz-1))/2;

    sort(m+1,m+nr+1);
    for(int i=1;i<nr;)
    {
        int j;
        for(j=i+1;m[i] == m[j]; ++j);
        long long nrl = j-i;
        rez += (nrl*(nrl-1)/2);
        i=j;
    }
    g<<rez<<"\n";
}