Cod sursa(job #1993566)

Utilizator Neamtu_StefanStefan Neamtu Neamtu_Stefan Data 23 iunie 2017 11:56:19
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <fstream>
#include <algorithm>
#define MAX 1002
#define inf 0x3f3f3f3f

using namespace std;

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

struct{
    int x,y;
}P[MAX];

int n,cnt;
double segmente[MAX*MAX];
long long rez;

int main()
{
    fin >> n;

    for (int i=0;i<n;i++)
        fin >> P[i].x >> P[i].y;

    for (int i=0;i<n;i++)
        for (int j=i+1;j<n;j++)
        {
            double a=P[j].x-P[i].x;
            double b=P[j].y-P[i].y;
            if (a)
                segmente[cnt++]=b/a;
            else
                if (b>0) segmente[cnt++]=inf;
                else segmente[cnt++]=-inf;
        }

    cnt--;
    sort (segmente,segmente+cnt);

    int nr=1;
    for (int i=0;i<n && segmente[i]!=inf;i++)
        if (segmente[i]==segmente[i+1])
            nr++;
        else
        {
            rez+=nr*(nr-1)/2;
            nr=1;
        }

    rez+=nr*(nr-1)/2;

    fout << rez;

    return 0;
}