Kao 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