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

Podobne dokumenty