In caz ca unii dintre noi nu stiu hash sau notiunea de panta, la problema plagiat puteti folosi si urmatoarea abordare. Translatam fiecare punct in origine, si translatam celelalte puncte fata de acesta, si memoram astfel noile puncte obtinute. Practic , avand un punct (x,y) memorat, noi stim ca avem un segment de la (0,0) la (x,y). De asemenea, memoram pentru fiecare punct translatat, fata de ce punct l-am translatat.Acum, daca avem doua puncte (x1,y1) si (x2,y2) ambele apartinand la cel putin 2 origini diferite, inseamna ca avem solutie. Asta este echivalent cu a avea o pereche de segmente ((0,0) (x1,y1)) si ((0,0),(x2,y2)) ce le regasim in cel putin 2 translatii diferite, deci avem 2 triunghiuri din 2 translatii diferite identice.Acum, pentru a face acest lucru, sortam vectorul punctelor translatate (spre ex. intai dupa x apoi dupa y, conteaza mai putin) si pentru o secventa de puncte identice memoram ca avem o pereche de segmente comune pentru punctele de translatie i si j.Putem face asta cu o matrice m(i)(j)=cate segmente translatate au in comun punctele "de origine" i si j.Aparent abordarea pare un n^3, dar daca m(i)(j) devine 2 la un moment dat inseamna ca avem solutie. Astfel avem complexitate N^2 de la crearea punctelor, N^2log(N) de la sortare, si 2*(N^2) de la aflarea solutiei. Complexitate totala (N^2log(N)) . Nu contrazic cu nimic solutia oficiala, dar pentru participantii din grupe inferioare de varsta notiunea de panta si de hash pot parea straine.
Da, exact solutia asta am implementat-o si eu in concurs
