Sunteți pe pagina 1din 1

Paralel rezolvarea prolemei

Rezolvarea problemei se poate face fara multe cunostinte de geometrie analitica.


E suficient sa stim ca pentru punctele A(xa,ya), B(xb,yb), mijlocul segmentului
AB are coordonatele ((xa+xb)/2, (ya+yb)/2).
Stiind ca diagonalele unui paralelogram se intersecteaza la mijlocul lor vom cau
ta sa vedem cate perechi de segmente formate de punctele date au acelasi mijloc.
De aici rezolvarea urmatoare in O(n^2* log n) timp, cu O(n^2) memorie:
Se creeaza un vector V, cu mijloacele celor n*(n-1)/2 segmente determinate de pu
nctele date.
Se ordoneaza acest vector, apoi se parcurge cautand secvente de valori egale.
O secventa de k valori egale inseamna k*(k-1)/2 paralelograme, deoarece oricare
doua puncte dintre cele k reprezinta mijlocul a doua diagonale ale unui posibil
paralelogram.
In implementarea aleasa am renuntat la impartirea la 2, pentru a lucra numai cu
numere intregi, iar perechea (x,y) am memorat-o intr-o valoare de tip longint: 1
024*x+y (stiind ca suma a doua coordonate nu depaseste 1000).

S-ar putea să vă placă și