Cod sursa(job #1803093)

Utilizator maryan_lupMarian Lupascu maryan_lup Data 10 noiembrie 2016 22:41:04
Problema Trapez Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include <fstream>
#include <vector>
#define FOR(i,a,b) for(int i=a; i<=b; i++)
#define MMAX 999999999
#include<bits/stdc++.h>

using namespace std;

long N;
struct punct
{
    long x,y;
};
vector<punct> p;
vector<float> m;

void citire()
{
    ifstream f("trapez.in");
    f>>N;
    FOR(i,0,N-1)
    {
        punct P;
        f>>P.x>>P.y;
        p.push_back(P);
    }
    f.close();
}

void afisare(unsigned x)
{
    ofstream g("trapez.out");

    g<<x<<'\n';
//
//    FOR(i,0,m.size()-1)
//    g<<m[i]<<"  ";

    g.close();
}

float panta(punct a, punct b)
{
    if((b.x-a.x)==0) return MMAX;
    float pan=(float)(b.y-a.y)/(b.x-a.x);
    return pan;
}

void constructie_pante()
{
    FOR(i,0,N-1)
    {
        FOR(j,i+1,N-1)
        {
            m.push_back(panta(p[i],p[j]));
        }
    }
    sort(m.begin(),m.end());
}

int determina_trapeze()
{
    unsigned k=0,t;
    FOR(i,0, m.size() - 2)
    {
        t=0;
        while(m[i]==m[i+1]){t++;i++;}
        t=t*(t-1)/2;
        k+=t;

    }
    return k;
}

int main()
{
    citire();

    constructie_pante();

    afisare(determina_trapeze());

    return 0;
}