Diferente pentru winter-challenge-2020/solutii/hidden intre reviziile #4 si #8

Nu exista diferente intre titluri.

Diferente intre continut:

Acum avem $u * v$ puncte _candidat_: Fiecare pereche $(j, k)$ ne spune ca $(X{~j~}, Y{~k~})$ poate fi unul din punctele ascunse. E clar ca punctele ascunse formeaza o submultime a punctelor _candidat_.
Sa ne alegem un unghi _random_ si sa trasam o dreapta $d$ la acel unghi, care trece, sa zicem, prin origine. Prin fiecare punct _candidat_ $P{~t~}$, ducem dreapta paralela cu $d$, pe care o notam cu $d{~t~}$. Sortam punctele _candidat_ dupa distanta intre $d$ si $d{~t~}$. Deoarece unghiul ales este _random_, este o sansa foarte mare ca dreptele consecutive (in ordinea sortarii) sa se afle la o distanta relevanta. In caz ca distanta intre doua drepte este mai mica decat $epsilon = 10^6^$, alegem alt unghi.
Sa ne alegem un unghi _random_ si sa trasam o dreapta $d$ la acel unghi, care trece, sa zicem, prin origine. Prin fiecare punct _candidat_ $P{~t~}$, ducem dreapta paralela cu $d$, pe care o notam cu $d{~t~}$. Sortam punctele _candidat_ dupa distanta intre $d$ si $d{~t~}$. Deoarece unghiul ales este _random_, este o sansa foarte mare ca dreptele consecutive (in ordinea sortarii) sa se afle la o distanta relevanta. In caz ca distanta intre doua drepte este mai mica decat $epsilon = 10^-6^$, alegem alt unghi.
Prin $O(n*log(n))$ query-uri cu drepte paralele cu $d$, putem determina precis care sunt acele $d{~t~}$ care contin punctele ascunse. Algoritmul poate fi implementat cu o functie recursiva care primeste intervalul $[st, dr)$ de drepte _candidat_, si apeleaza fiii $[st, (st + dr) / 2)$, $[(st + dr) / 2, dr)$ doar daca afla, prin query, ca exista macar un punct ascuns pentre candidatii de la $st$ la $dr-1$.
Prin $O(n*log(n))$ query-uri cu drepte paralele cu $d$, putem determina precis care sunt acele $d{~t~}$ care contin punctele ascunse. Algoritmul poate fi implementat cu o functie recursiva care primeste intervalul $[st, dr)$ de indici ale dreptelor _candidat_, si apeleaza fiii $[st, (st + dr) / 2)$, $[(st + dr) / 2, dr)$ doar daca afla, prin query, ca exista macar un punct ascuns pentre candidatii de la $st$ la $dr-1$.
Desi, in practica, solutia este foarte eficienta ca numar de query-uri, iar complexitatea timp, data de sortarea _candidatilor_, este $O(n^2^ * log(n))$, e nevoie de query-uri pe numere reale pentru a diferentia intre dreptele candidat, deci nu obtine punctajul maxim.

Nu exista diferente intre securitate.

Topicul de forum nu a fost schimbat.