Zestaw zadań konkursowych X Regionalnego Konkursu Informatycznego Instytut Informatyki UwB 24.04.2010 r. Uwaga: Skompilowane wersje programów mają być umieszczone na Pulpicie w katalogu o nazwie konkurs. Nazwy plików: z1.exe program będący rozwiązaniem zadania 1, z2.exe zadania 2 itd.
Zadanie 1: Commando Znajdź, namierz, zniszcz to Twoje motto, a jednocześnie słowa wyhaftowane na sztandarze Twojej jednostki antyterrorystycznej. Znajdź - terroryści ostrzegli Twoje miasto jest zaminowane. Jeden zły ruch i wielkie bum - miasto przestanie istnieć. Żądania terrorystów są tak irracjonalne, że nikt nie jest w stanie ich wykonać. Pozostaje rozbrojenie ładunku. Namierz - sztab kryzysowy namierzył wszystkie detektory podłączone do ładunku wybuchowego mogącego obrócić w perzynę całe Twoje miasto. Zniszcz - jako strzelec wyborowy tylko Ty jesteś w stanie rozbroić ładunek. Zadanie bardzo proste musisz znaleźć się w tej samej odległości od trzech detektorów i trzema strzałami je unicestwić. Potem przemieszczasz się w okolice kolejnej trójki detektorów i znów trzy strzały itd. Problem jest tylko jeden czy zdążysz przed eksplozją? Od pierwszego wystrzału masz ograniczony czas na unicestwienie wszystkich detektorów. Dane wejściowe W pierwszej linii dwie liczby x s i y s oznaczające współrzędne miejsca startu komandosa. W drugiej linii n liczba grup (trójek) detektorów do zniszczenia. W kolejnych n liniach po 6 liczb (oddzielonych spacjami) oznaczających odpowiednio współrzędne x i i y i kolejnych detektorów w grupie. W ostatniej linii czas t (w sekundach), w którym musi zostać wykonane zadanie. Pamiętaj każdy strzał to 1 sekunda, a pomiędzy punktami, z których oddawane są strzały, komandos porusza się z prędkością 0.5 m/s. Wszystkie współrzędne wyrażone są w metrach. Zakładamy, że znajdujemy się w I ćwiartce układu współrzędnych. Komandos porusza się pomiędzy trójkami w kolejności zadanej danymi wejściowymi i zawsze najkrótszą drogą. Ograniczenia: wszystkie współrzędne znajdują się w zakresie 0 <= x,y <= 100. Detektory w danej grupie nie mogą leżeć współliniowo. Dane wyjściowe Jeżeli komandos zdąży wykonać zadanie to wyświetlone słowo ALIVE i po spacji czas, który pozostał. Jeżeli nie zdąży słowo DEAD i po spacji czas, którego zbrakło do wykonania zadania. Czas wyświetlony z dokładnością do dwóch miejsc po przecinku. 10 1 2 10 8 10 10 8 10 4 5 5 5 4 5 30 DEAD 4.85
Zadanie 2: Kombatant Instytut Pamięci Narodowej odnalazł Kombatanta pamiętającego jeszcze czasy I i II wojny światowej. Przeprowadził z nim mnóstwo ciekawych wywiadów, z których dowiedział się wiele nieznanych faktów z różnych frontów walk. Informacje były niezwykle interesujące, ale miały jeden drobny mankament. Kombatant starszy Pan miał kłopoty z pamięcią. Zapomniał większość dat. Pamiętał tylko, że opisywane wydarzenie było np. w drugi czwartek kwietnia 1940 roku, a inne w trzecią środę listopada 1915 roku. IPN publikując wywiady zdecydował, że poda konkretne daty opisywanych wydarzeń w stylu, do którego jesteśmy przyzwyczajeni. Poprosił więc sekcję informatyczną, której właśnie stałeś się członkiem, o wyliczenie wszystkich dat. Twoim zadaniem jest napisanie programu, który na podstawie w/w opisu dnia poda jego konkretną datę. Uwagi: Przyjmujemy, że daty mają być wyznaczone według kalendarza gregoriańskiego. W testach mogą wystąpić więc daty od 1583 roku mimo, że nasz Kombatant ich nie pamięta. Jedna linia zawierająca 4 liczby rozdzielone pojedynczą spacją i zakończona znakiem nowej linii, gdzie: - pierwsza cyfra oznacza który, w danym miesiącu, był to poniedziałek, wtorek, środa, czwartek, piątek, sobota lub niedziela - druga cyfra oznacza numer dnia, przy czym poniedziałek to 1, wtorek 2,, niedziela 7 - trzecia liczba oznacza numer miesiąca, przy czym styczeń to 1, luty 2,, grudzień 12 - czwarta liczba oznacza rok wydarzenia Jedna linia (bez żadnych spacji) zakończona znakiem nowej linii zawierająca datę zapisaną w formacie dzień/miesiąc/rok. Proszę zwrócić uwagę na znak /. Ponadto, dzień czy miesiąc pierwszy to 1, a nie 01. 4 6 4 2010 24/4/2010
Zadanie 3: Profesor Pewien profesor bardzo chaotycznie chodzi po schodach i czasem pokonuje po dwa lub trzy stopnie jednocześnie, a czasem tylko jeden. Napisz program obliczający liczbę różnych sposobów pokonania przez profesora n schodów. Liczba całkowita n określająca liczbę stopni (1 <= n <= 1000). Liczba możliwych sposobów pokonania schodów. Przykład 6 24
Zadanie 4: Konkurs w programowaniu Dziś wręczenie nagród dla najlepszych programistów w Białymstoku. Będą telewizja, radio i prasa. Ceremonia wręczenia odbędzie się na nowej, pięknej auli Instytutu Informatyki. Jednak pojawił się problem zepsuło się prawie całe oświetlenie, działa tylko jeden reflektor. Organizatorzy postanawiają rozwiązać tę niedogodność w taki sposób, aby jedyny czynny reflektor w danej chwili oświetlał możliwie największą liczbę uczestników. Twoim zadaniem jest napisanie programu, który pomoże organizatorom i, dla podanego rozstawienia aktorów i promienia okrągłej wiązki światła z reflektora, obliczy maksymalną liczbę uczestników konkursu, jaką może ona objąć swym zasięgiem. Oczywiście położenie reflektora jest regulowane, a wiązka światła jest zawsze okrągła. W pierwszym wierszu znajdują się dwie liczby całkowite r (1 <= r <= 200) oraz n (1 <= n <= 100), oddzielone pojedynczą spacją, oznaczające odpowiednio promień wiązki światła padającej na aulę i liczbę uczestników konkursu. W kolejnych n wierszach podane są pary x i i y i liczb całkowitych (-200 <= x i, y i <= 200), oddzielonych pojedynczą spacją, oznaczające współrzędne punktów określających położenie uczestników konkursu na auli. Zakładamy, że każdy uczestnik konkursu znajduje się w innym miejscu. Wynikiem jest maksymalna liczba uczestników konkursu, jaką swym zasięgiem może objąć reflektor. Należy przyjąć, że uczestnicy konkursu, którzy znajdują się dokładnie na obrzeżu wiązki, są w jej zasięgu. 2 4 2 1 2 3 2 5 4 3 4
Zadanie 5: Labirynt Pewien człowiek obudził się zamknięty w labiryncie. Nie wiedząc jak z niego wyjść wymyślił prosty algorytm przeszukiwania labiryntu w poszukiwaniu wyjścia. Mając nadzieję że labirynt nie zawiera pętli planował zawsze skręcać w prawo na każdym rozwidleniu dróg, gdzie byłaby tylko możliwość takiego skrętu oraz zawracać, gdy natrafi na ślepą uliczkę. Po wielu godzinach chodzenia po labiryncie, na skraju wyczerpania, odnalazł upragnione wyjście, ale gdyby natrafił na jeszcze jedną ślepą uliczkę zrezygnowałby z dalszych poszukiwań. Napisać program obliczający w ilu miejscach przebywał ów człowiek co najmniej dwa razy oraz jak najdalej odszedł od punktu do którego musiał wrócić. Uwaga: Kolejne punkty, które zostały odwiedzone przez tego człowieka są opisane liczbami naturalnymi. Wystąpienie liczb x, y, x oraz x, y, y, x zawsze oznacza zawrócenie się w ślepej uliczce dla x y (w drugim przypadku y został odwiedzony dwa razy). Jedna linia zawierająca ciąg liczb naturalnych, długości maksymalnie 200*10 6, odpowiadających kolejnym punktom w labiryncie odwiedzanych przez owego człowieka, oddzielonych spacjami, zakończona znakiem nowej linii. Jedna linia zawierająca liczbę miejsc odwiedzonych co najmniej dwa razy oraz liczbę odpowiadającą maksymalnej odległości, jaką przeszedł ów człowiek od punktu, do którego musiał wrócić, oddzielone spacją i zakończone znakiem nowej linii. Miarą odległości jest liczba punktów. 1 2 3 4 4 3 5 3 2 6 4 6 3 4 2