Gric
View as PDFKao nagradu za izuzetan uspeh na prvom krugu kvalifikacija, Aleksa je dobio na poklon parče keksa u obliku pravougaonika dimenzija , i postavio ga je u ravan tako da mu se temena nalaze na koordinatama
i
. Njegov arhineprijatelj Pavle se nameračio na ovo parče keksa i planira da ga pojede. Pavletova vilica se može opisati krugom poluprečnika
. Tokom
-tog minuta desi se jedan od sledeća dva događaja:
: Pavle pozicionira svoju vilicu tako da se centar kruga nalazi u tački sa koordinatama
, zatim grize keks odnosno uklanja sav sadržaj keksa koji se nalazi u njegovoj vilici,
: Aleksa uzima lenjir, postavlja ga tako da bude paralelan sa
-osom, tako da prolazi kroz tačku
i meri dužinu trenutno preostalog parčeta keksa koje se preklapa sa ivicom lenjira.
Da li možete da predvidite koje rezultate merenja će Aleksa dobiti?
Opis ulaza
U prvoj liniji standardnog ulaza nalaze se četiri prirodna broja, odvojena razmakom: . U narednih
linija, nalaze se dva ili tri broja:
ili
, odvojena razmakom, koji opisuju
-ti događaj.
Opis izlaza
Za svaki događaj tipa ispisati jedan realan broj - rezultat odgovarajućeg merenja. Ukoliko je tačno rešenje tog merenja
, a vaš program ispisuje broj
, vaš izlaz će se smatrati tačnim ukoliko važi
.
Primer 1
Ulaz
3 2 2 5
2 1
1 2 3
2 0
2 1
2 2
Izlaz
2.000000000000
2.000
1.267949192431
1
Objašnjenje primera
Pre nego što je Pavle odgrizao parče keksa, na bilo kojoj -koordinati bila bi izmerena vrednost
. Nakon što je odgrizao parče keksa, na koordinati
je dužina
, na
je
a na
je
(videti sliku).
Ograničenja
Test primeri su podeljeni u 5 disjunktnih grupa:
- U test primerima vrednim 10 poena:
.
- U test primerima vrednim 10 poena:
.
- U test primerima vrednim 10 poena:
.
- U test primerima vrednim 20 poena: Svaki događaj tipa
se javlja nakon svih događaja tipa
.
- U test primerima vrednim 50 poena: Bez dodatnih ograničenja.
Napomena
Da biste izbegli probleme sa preciznošću, koristite tipove double ili long double u jeziku C++, i ispisujte rešenje na bar decimala.
Comments