Cod sursa(job #2114704)

Utilizator pistvanPeter Istvan pistvan Data 25 ianuarie 2018 19:30:29
Problema Trapez Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <limits>

using namespace std;

int N, r;
pair<double, double> p[1001];
double M[500000];
int it;

void read()
{
    ifstream f("trapez.in");
    f>>N;
    for (int i=0, x, y;i<N;i++)
    {
        f>>x>>y;
        p[i]={x, y};
    }
}

void count_lines()
{
    double m;
    for (int i=0;i<N;i++)
        for (int j=i+1;j<N;j++)
            if (p[i].first==p[j].first)
                M[it++]=2000000001;
            else
                M[it++]=(p[i].second-p[j].second)/(p[i].first-p[j].first);
    sort(M, M+it);
    int k=1;
    //cout<<M[0]<<' ';
    for (int i=1;i<it;i++)
    {
        //cout<<M[i]<<' ';
        if (M[i]==M[i-k])
        {
            k++;
        }
        else
        {
            r+=k*(k-1)/2;
            k=1;
        }
    }
}

void write()
{
    //cout<<r;
    ofstream g("trapez.out");
    g<<r;
}

int main()
{
    read();
    count_lines();
    write();
}