Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | snooker.in, snooker.out | Sursă | Junior Challenge 2012 |
Autor | Vlad Gavrila | Adăugată de | |
Timp execuţie pe test | 0.1 sec | Limită de memorie | 20480 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Snooker
Ronnie OSullivan a înţeles în sfârşit că şi defensiva este utilă în jocul de snooker. Pentru a exersa această tactică, Ronnie şi-a cumpărat o masă de dimensiuni (N+2)*(M+2), fără buzunare, dotată cu o bilă albă şi K bile roşii, toate bilele având raza 1. Colţul din stânga-jos al mesei are coordonatele (-1, -1) iar colţul dreapta-sus are coordonate (N+1, M+1). Observăm astfel că o bilă plasată in colţul stânga-jos va avea centrul la coordonatele (0, 0). Analog, centrul unei bile plasată în dreapta-sus va avea coordonatele (N, M).
Ronnie se va antrena în felul următor: el plasează cele K bile roşii pe masă, toate în puncte de coordonate naturale. Apoi, Ronnie îşi alege două puncte A şi B de coordonate naturale (Xa, Ya), respectiv (Xb, Yb). El plasează bila albă cu centrul în punctul A şi încearcă să o lovească cu tacul astfel încât, după ce rulează pe masă, ea să se oprească cu centrul în punctul B, fără ca, pe traiectorie, să fi atins vreuna din bilele roşii. Din cauza poziţiilor în care se află bilele roşii, se poate ca lovitura să nu se poată efectua direct, ci doar cu manta. Masa cumpărată de Ronnie este de o calitate superioară, încât bila albă sare din mantă sub acelaşi unghi sub care a fost lovită (vezi figura).
Cerinţă
Dându-se N, M, coordonatele punctelor A şi B, numărul K de bile roşii precum şi coordonatele acestora, să se determine unghiul sub care trebuie să plece bila alb
Date de intrare
Fişierul de intrare snooker.in va conţine pe prima linie şase numere naturale: N, M, Xa, Ya, Xb, Yb. Pe a doua linie se va afla numărul natural K.
Date de ieşire
În fişierul de ieşire snooker.out se va afişa un număr real X, reprezentând măsura, în radiani, a unghiului sub care trebuie lovită bila.
Restricţii
- 10 ≤ N, M ≤ 1000
- 1 ≤ K ≤ 100
- Toate numerele din datele de intrare sunt naturale.
- Manta se defineşte ca fiind marginea înălţată a mesei, mai exact conturul dreptunghiului cu colţurile în punctele (-1, -1) şi (N+1, M+1).
- Se garantează că pentru fiecare din teste problemei există o soluţie pentru care bila albă atinge manta de maxim 5 ori.
- Se va accepta orice soluţie pentru care bila albă atinge manta
- Important! Pentru afişarea răspunsului se recomandă utilizarea funcţiei atan2 din librăria cmath, pentru programatorii C/C++, sau a funcţiei arctan2, pentru programatorii Pascal. Ambele funcţii primesc parametrii y şi x şi returnează valoarea în radiani a unghiului facut de punctul (x, y) cu originea (0, 0). Având un punct (X, Y) aflat pe traiectoria iniţială a bilei albe şi punctul (Xa, Ya), răspunsul pe care trebuie să îl afişaţi este atan2(Y-Ya, X-Xa) sau arctan2(Y-Ya, X-Xa). Mai multe detalii despre cele 2 functii gasiti pe C++ Reference şi pe FreePascal.org
Exemplu
snooker.in | snooker.out |
---|---|
This is some text written on multiple lines. | This is another text written on multiple lines. |
Explicaţie
...