Zadanie Dodatkowe K*. Osaczony.

Transkrypt

Zadanie Dodatkowe K*. Osaczony.
!
K* - Osaczony.
Algorytm!
01-11-2013
Miejsce Akcji: Pasadena CA, USA.
Wróg Sheldona, Leonarda, Howarda i Rajesha - Barry Kripke - oszalał i chce zabić naszego
agenta dr. Sheldona Coopera. Opanowała go jakaś choroba (typu zombie) i gdy tylko
kogoś ugryzie, to ta osoba przechodzi na jego stronę. Mamy jednak pewną szczepionkę,
która uodparnia na tę chorobę. Mamy jej jednak niewiele i musimy ją oszczędzać. Na
szczęście choroba ta jest tylko czasowa i jeśli poddamy kwarantannie osoby zarażone, to
po 72 godzinach ozdrowieją i wszystko wróci do normy.
Opis sytuacji: Na kampusie Kripke wyszedł ze swojego biura po zarażeniu (jego gabinet ma
współrzędne (0, 0) na naszej mapie w formie układu współrzędnych. Zaczyna on biegać
po korytarzach i kogo napotka to ugryzie zarażając i poddając swojej kontroli, więc każda
napotkana przez niego osoba także chce zabić naszego agenta.
My mamy szczepionkę i dokładny obraz kto gdzie się znajduje w danym momencie (są to
punkty na naszym układzie współrzędnych. Musimy podać szczepionkę osobom, które
następnie zamkną drogę ucieczki wszystkim, którzy znajdą się wewnątrz ich “okręgu”).
Zakładamy, że każdy któremu podamy szczepionkę będzie wstanie powstrzymać
zakażonych bez szkód dla siebie czy otoczenia. Zakładamy również, że osoby znajdujące
się na zewnętrznej stronie nie przepuszczą nikogo między sobą - wyznaczenie najbardziej
zewnętrznej wypukłej otoczki wystarczy do rozwiązania problemu.
Twoje zadanie: Napisz więc algorytm wyznaczający otoczkę wypukłą po wierzchołkach
(ludziach), na naszym układzie współrzędnych (mapie).
Wejściem do algorytmu będzie oczywiście mapa, w której Kripke znajduje się w samym
środku układu, a pozostałe punkty gdzieś na całym układzie wokół niego. Punkty nie
poruszają się i nie zmieniają pozycji.
Jeśli odmówisz wykonania zadania, Sheldon może zginąć o Leonard, Howard i Rajesh nie
wymyślą jakiegoś sposobu aby go uratować. Decyzja czy staniesz po jego stronie, czy po
stronie Barrego, należy do Ciebie.
Wejście programu:
Linia 0: — liczba sytuacji które mogą zajść (układów współrzędnych).
Dla każdego układu:
Linia 1 — Liczba osób (punktów) na układzie n;
Kolejne n linii:
x y — współrzędne punktu w układzie (x,y);
Struktura wyjścia:
K — liczba osób, którym należy podać szczepionkę (ilość punktów w otoczce wypukłej);
Kolejnych K linii:
x y — to współrzędne punktów w otoczce, począwszy od punktu o największej
współrzędnej y (a w drugiej kolejności największą współrzędną x), zgodnie z ruchem
wskazówek zegara;
Powodzenia Agencie.
—1—
!
Algorytm!
01-11-2013
Przykładowe dane wejściowe i wynik działania programu dla tych danych.
Przykładowe dane wejściowe:
fig. 1 — Yours software input data
Dane które powinieneś wyprodukować z tego wejścia:
fig. 2 — Yours software output data
—2—