Cod sursa(job #2620365)

Utilizator florescu.mirunaMiruna Stefania Florescu florescu.miruna Data 28 mai 2020 19:39:55
Problema Trapez Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <iostream>
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f ("trapez.in");
ofstream g ("trapez.out");
struct coordonate
{
    int x,y;
} v[1000];
int n,i,j,k,lungime_secventa, nr_trapeze;
double panta[1000];
int main()
{
    f>>n;

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

    for(int i=0; i<n-1; i++)
        for(int j=i+1; j<n; j++)
        {
            ///Aflam panta pentru fiecare dreapta care se poate forma
            if(v[i].x-v[j].x)
            {
                panta[k++] = (double)(v[i].y-v[j].y)/(v[i].x-v[j].x);
            }
        }

    sort(panta,panta+k);

    lungime_secventa = 1;
    panta[k+1] = -1;
    for(int i=0; i<k-1; i++)
    {
        if(panta[i] != panta[i+1])
        {

            nr_trapeze += ((lungime_secventa - 1) *lungime_secventa)/2;
            ///Doua drepte sunt parelele daca au pantele egale,
            ///vedem cate drepte cu aceeasi panta avem
            ///si calculam combinari de n luate cate 2 pentru a vedea cate trepeze putem forma
            lungime_secventa = 1;
        }
        else
            lungime_secventa ++;



    }
    g<<nr_trapeze;
    return 0;
}