Zadania - Instytut Informatyki UwB
Transkrypt
Zadania - Instytut Informatyki UwB
Zestaw zadań konkursowych XVI Regionalnego Konkursu Informatycznego Instytut Informatyki UwB 9.04.2016 r. Uwaga: Wersje źródłowe i skompilowane programy mają być umieszczone na Pulpicie w katalogu o nazwie „konkurs”. Nazwy plików: z1.cpp, z1.exe – program będący rozwiązaniem zadania 1, z2.cpp, z2.exe – zadania 2 itd. Zadanie 1: Rozgrzewka Jeden z uczestników Regionalnego Konkursu Informatycznego, który kiedyś zakwalifikował się do drugiego etapu konkursu po wejściu do siedziby Instytutu Informatyki w Białymstoku, miał wątpliwości, czy powinien wejść na piętro gdzie miał się odbyć finał konkursu. Wchodził kilka schodów w górę, po czym zawracał się i schodził kilka z nich, aby następnie znów odzyskać wiarę w siebie i wejść kilka stopni w górę, itd. Po kilku minutach, gdy trzeci raz zszedł ze schodów, przypomniał sobie, że konkurs i tak jest na parterze, więc nie musi „zdobywać schodów”. Postanowił jednak, że jako zadanie na rozgrzewkę obliczy liczbę dróg jakie mógł przebyć po schodach. Oczywiście w budynku nie ma zejścia do podziemi. Dodatkowo rozpoczął zdobywanie schodów z parteru oraz zszedł 3 razy na parter. Założył, że schodów w górę jest dostatecznie dużo oraz, że przebył łącznie 30 schodów w górę i 30 schodów w dół. Jego program okazał się jednak zbyt wolny aby to obliczyć i przez pierwszą godzinę przeanalizował tylko 1 biliard przypadków. Twoim zadaniem jest napisać program, który przeliczy liczbę możliwych dróg w czasie nie dłuższym niż 10 sekund. Dane wejściowe: Pierwsza linia zawiera w sobie liczbę zejść na parter (nie przekraczającą 20) oraz łączną liczbę przebytych schodów w górę i w dół (liczba parzysta, nie przekraczająca 200). Dane wyjściowe: Liczba dróg, która nie przekracza zakresu long long int. Przykład 1 Dane wejściowe: 3 10 Dane wyjściowe: 9 Przykład 2 Dane wejściowe: 3 60 Dane wyjściowe: 738494264901008 Zadanie 2: A-65 a-97 447A69656369 77 7A65726F776365 6A65737A637A65 6E6965 706F747261666961 7069736163 616E69 6C69637A7963 616C65 706F747261666961 6F62736C756769776163 6B6F6D7075746572 4E617069737A 70726F737479 6B616C6B756C61746F72 6B746F7279 6265647A6965 756D69616C 74796C6B6F 646F6461776163 69 6F64656A6D6F776163 6C69637A6279 63616C6B6F77697465 Wejscie (nie ma zadnych spacji) 4A65646E61 6C696E6961 7A 70727A796B6C6164656D 646F 6F626C69637A656E6961 Wyjscie 4A65646E61 6C69637A6261 63616C6B6F77697461 626564616361 77796E696B69656D 6F626C69637A656E 69 7A6E616B 6B6F6E6361 6C696E6969 Przyklad: Wejście 1-2+(1-(3--12)) Wyjście -15 Zadanie 3: Horror Niestety, najgorszy kosmiczny kicz z horrorów Eda Wooda, próbuje zawładnąć Ziemią. Kosmici, właściwie nie podobni do niczego, sieją spustoszenie na całym globie. Na szczęście dzielnym agentom CIA i analitykom NSA udało się opracować plan walki z przybyszami. Otóż okazało się, że krwiożerczy kosmici poruszają się luźnymi trójkami. Aby ich unicestwić należy znaleźć się w tej samej odległości od każdego z nich i trzema strzałami zakończyć brutalny żywot bestii. Potem trzeba przemieścić się w okolice kolejnej trójki kosmitów i znowu oddać tylko trzy strzały itd. Problem jest tylko jeden – czy strzelec wyborowy NAVY Seals zdąży przed wykryciem? Od pierwszego wystrzału ma on ograniczony czas na dokonanie rzezi pobliskich krwiożerczych bestii z kosmosu. Dane wejściowe W pierwszej linii dwie liczby xs i ys oznaczające współrzędne miejsca startu strzelca. W drugiej linii n – liczba grup (trójek) kosmitów do unicestwienia. W kolejnych n liniach po 6 liczb (oddzielonych spacjami) oznaczających odpowiednio współrzędne xp i yp kolejnych potworów w grupie. W ostatniej linii czas t (w sekundach), w którym musi zostać wykonane zadanie. Każdy strzał to 1 sekunda, a pomiędzy punktami, z których oddawane są strzały, strzelec porusza się z prędkością 2 m/s. Wszystkie współrzędne wyrażone są w metrach. Należy założyć, że pole walki opisane jest współrzędnymi dodatnimi (I ćwiartka układu współrzędnych). Strzelec 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 1000. Potwory w danej grupie nie mogą znajdować się współliniowo. Dane wyjściowe Jeżeli strzelec zdąży wykonać zadanie to należy na standardowym wyjściu wypisać słowo „WIN” i po spacji czas, który mu jeszcze pozostał. Jeżeli nie zdąży – słowo „DEFEAT” i po spacji czas, którego zabrakło do wykonania zadania. Czas powinien być wyświetlony z dokładnością do dwóch miejsc po przecinku. Przykład: Dane wejściowe: 13 3 3 10 5 8 5 9 7 7 2 3 2 5 5 4 8 2 6 2 8 30 Dane wyjściowe: DEFEAT 9.07 Zadanie 4: Superkolejka W nowo otwartym centrum obliczeniowym UCO panuje straszny tłok – wszyscy naukowcy chcą mieć dostęp do najnowszego superkomputera wyposażonego w dużą liczbę jednakowych rdzeni obliczeniowych. Zasypany ogromną ilością zadań system kolejkowy przestał działać. Administratorzy muszą szybko opracować skuteczny sposób podziału zadań tak, by maksymalnie wykorzystać czas dostępu użytkowników do supermaszyny. Twoje zadanie polega na tym, aby pomóc im podzielić listę zadań do wykonania w taki sposób, aby było wiadomo, które rdzenie wykonują dane zadanie i wszystkie zadania skończyły się możliwie szybko. Dane wejściowe W pierwszej linii znajduje się ilość rdzeni superkomputera 1 < r < 1000, które można wykorzystać. Pozostałe linie (max. 100000) zawierają unikalny identyfikator kolejnego zadania (napis o długości od 1 do 8 znaków utworzony z małych liter, cyfr lub znaków podkreślenia) i oddzielony spacją odpowiadający mu czas działania 0 < t < 10000 (w pełnych sekundach). Dane wyjściowe W kolejnych r liniach powinny się znaleźć listy identyfikatorów zadań do wykonania przez poszczególne rdzenie. Identyfikatory w każdej z linii powinny zostać uporządkowane zgodnie z ich kolejnością występowania w danych wejściowych (w zależności od wyboru rdzeni może istnieć więcej niż jeden optymalny sposób podziału). W dodatkowej ostatniej linii program powinien wypisać ilość sekund, jaka upłynie do momentu wykonania wszystkich zadań przy zaproponowanym podziale zadań na rdzenie. Przykład: Dane wejściowe 3 tarski 22 xboole_0 34 enumset1 14 funct_3 2 abcmiz_1 14 pencil_4 4 binarith 45 Dane wyjściowe binarith xboole_0 abcmiz_1 tarski enumset1 funct_3 pencil_4 48