A - Rescue Mission (ASD Mission Briefing)

Transkrypt

A - Rescue Mission (ASD Mission Briefing)
!
A - Rescue Mission.
BRIEFING!
10-14-2012
Miejsce Akcji: Tajna kwatera główna wrogiej agencji wywiadu.
Kompleks został umieszczony w Szwajcarii w bunkrze pod siedzibą UBS (Union Bank of
Switzerland) - Szwajcarskiej firmy finansowej.
W kompleksie znajdują się całe poziomy z celami w których przetrzymywani są nasi agenci
przejęci podczas ostatniej akcji, która okazała się zasadzką obcych sił wywiadowczych.
Cel Misji: Twoje zadanie polega na włamaniu się do systemu komputerowego kompleksu
i wydobycie informacji, w których celach przetrzymywani są nasi agenci. Następnie
poprowadzisz naszych agentów, którzy uwolnią więźniów.
System zabezpieczeń kompleksu jest bardzo skomplikowany. Cele umieszczone są na
siatce N x M. Każda cela jest połączona z celami sąsiadującymi drzwiami, które można
otworzyć jedynie raz na określoną ilość sekund. Po otwarciu drzwi należy odczekać daną
ilość czasu aby otworzyć następne. Każda cela ma swoją rangę i można do niej wejść
dopiero po określonym czasie od wejścia do celi sąsiadującej. Każdy agent biorący udział
w akcji ratunkowej może podjąć tylko jednego więźnia i doprowadzić go do wyjścia.
Zapomniałbym, na każdy poziom można się dostać tylko jednymi drzwiami do celi
o współrzędnych (1, M), a wyjść jedynie przez drzwi w celi o współrzędnych (N, 1).
Trasa którą przygotujesz dla każdego z agentów musi przebiegać przez cele w taki sposób,
aby agent przebywał na poziomie jak najkrócej i mógł podjąć więźnia z celi
o wyznaczonych współrzędnych (X, Y).
Musisz napisać program, który będzie pobierał z bazy Kwatery dane o celach i więźniach.
Według naszego Intelu struktura danych w bazie wygląda następująco:
Linia 0:
Z — ilość poziomów na których są interesujące nas cele;
Następnie dane dla poszczególnych poziomów:
Linia 0:
M N — ilość wierszy i kolumn w siatce rozkładu cel na danym poziomie;
Linie od 1 do M:
L1 L2 L3 … LN — N liczb oznaczających ilość sekund, po których od wejścia do
sąsiadującej celi można otworzyć drzwi do tej celi;
Linie od M+2 ->:
X Y — współrzędne dla kolejnych cel w których przetrzymywani są nasi agenci;
Linia końcowa:
0 0 — w momencie gdy otrzymasz takie współrzędne, przeprowadzisz kolejnego agenta
najszybszą możliwą trasą do wyjścia i przeniesiesz się na kolejny poziom, aż do uwolnienia
wszystkich więźniów z wszystkich Z poziomów;
Każdy z naszych agentów posiada komputer umocowany na nadgarstku, na którym
będzie miał zainstalowaną odpowiednią aplikację nawigacyjną. Dlatego też ważne jest
aby wyjście twojego programu miało specyficzny format.
Każda linia, to dane dla jednego agenta w postaci:
K
S
MAPA
K — to całkowity czas przejścia poziomu, uwalniając przy tym więźnia ze wskazanej celi;
S — to ilość różnych cel które będzie musiał odwiedzić agent podczas swojego przejścia;
MAPA — to zapis trasy, w którą stronę mają się poruszać: N - północ, E - wschód,
S - południe, W - północ. Te informacje nie są oddzielane żadnymi innymi znakami;
Powodzenia Agencie.
—1—
!
BRIEFING!
Przykładowe dane wejściowe i trasy jakie powinieneś wyznaczyć.
Dane wejściowe wyeksportowane z bazy danych:
fig. 1 — Yours software input data
Dane które powinieneś wyprodukować z tego wejścia:
fig. 2 — Yours software output data
—2—
10-14-2012