PROBLEMA 8: OBSERVABILE
(Cei care dati la Poli o sa vedeti de ce am ales numele asta.
E un cuvant care o sa va creeze oarece cosmaruri la fizica)
DEADLINE: Duminica, 31 ianuarie 1999
TIMP DE IMPLEMENTARE: 90 minute
DOMENIU: Geometrie analitica
In planul xOy se fixeaza un punct P. Apoi se traseaza N<=100 drepte.
Sa se spuna cate dintre ele sunt observabile din punctul P. O dreapta
este observabila daca cel putin DOUA puncte ale ei sunt observabile
din punctul P. Este posibil ca o dreapta sa fie complet obturata de
una sau mai multe din celelalte drepte, caz in care ea nu este
observabila.
INTRAREA: Fisierul OBSERV.IN are formatul:
X Y Coordonatele REALE ale punctului P
N Numarul de drepte, 1<=N<=100
A1 B1 C1
...
AN BN CN Parametrii REALI ai dreptelor. Fiecare triplet
(Ai Bi Ci) defineste o dreapta de ecuatie:
Ai*x+Bi*y+Ci=0
IESIREA: Pe ecran se va tipari numarul de drepte care sunt observabile
din punctul P.
EXEMPLU:
OBSERV.IN
-3 -4
5
1 0 0 { D1 = Oy }
0 1 0 { D2 = Ox }
1 1 0 { D3 = bisectoarele 2 + 4 }
1 0 -2 { D4 = dreapta de ecuatie x-2=0 }
1 -1 3 { D5 = dreapta de ecuatie x-y+3=0}
Raspuns pe ecran:
3
(pentru ca dreptele D1, D2 si D5 sunt observabile }
TIMP DE RULARE: O secunda.
Remarci:
1. Se garanteaza ca punctul de observatie nu este situat pe niciuna
din drepte.
2. In exemplul dat, dreapta D3 nu este observabila, deoarece dreptele D1
si D2 o acopera, lasandu-i un singur punct vizibil: (0,0). Dreapta
D4 nu este observabila, deoarece este complet obturata de D1.
3. Problema are intrarea de dimensiuni mici; deci nu va stresati sa
gasiti cine stie ce algoritm performant. Cel mai natural algoritm
este O(N^2) si se incadreaza arhisuficient in timp (nu stiu daca
exista si algoritmi mai buni). Marile dificultati la problemele de
analitica sunt tratarea cazurilor particulare si evitarea erorilor de
calcul in real.
|
|