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).