Zadanie 1 W nowym sezonie piłkarskiej Ultraligi gra X zespołów. Zespoły grają (jak nazwa podpowiada) systemem ligowym, tj. każdy zespół rozgrywa z pozostałymi po dwa spotkania, jedno na swoim stadionie, drugie na stadionie przeciwnika. Szefowie Ultraligi zastanawiają się nad tym, czy po rundzie zasadniczej (po tym, jak każdy zespół z pozostałymi rozegra po dwa spotkania) nie wprowadzić dodatkowej formy rozgrywek (przez podział na grupy, system pucharowy itp.). Z drugiej strony obawiają się tego, że duża liczba spotkań znudzi kibiców. Aby rozstrzygnąć ten problem zwrócili się do Ciebie z prośbą o pomoc. Twoim zadaniem będzie obliczenie liczby wszystkich meczów, które zostaną rozegrane w lidze. W lidze każdy gra z każdym mecz i rewanż. Dla przykładu załóżmy, że w Ultralidze grają trzy zespoły: A, B i C. W lidze rozegrane zostaną następujące mecze: A : B A : C B : C (runda rewanżowa) B : A C : A C : B Jak można zauważyć zostanie rozegranych 6 spotkań. Pierwszy (i jedyny) wiersz wejścia zawiera jedną liczbę całkowitą l ( l 0000), oznaczającą liczbę drużyn. Na wyjściu w pierwszym (i jedynym) wierszu oczekujemy liczby spotkań (jako liczba całkowita), rozegranych w lidze systemem każdy z każdym, mecz i rewanż. 0 0 Natomiast dla wejścia: 380 I KPToP 1 Team of Programmers, WIMiI, PCz
Zadanie Jesteś szefem firmy usługowej, wytwarzającej oprogramowanie dla największych firm na świecie. Otwierasz nowe biuro w mieście X, gdzie zamierzasz utworzyć zespół programistów. Jak powszechnie wiadomo, każdy programista zamienia pizzę i kawę w kod źródłowy. O pizzę nie musisz się martwić (biuro mieści się nad pizzerią), natomiast problemem dla Ciebie jest kawa. Programiści w mieście X piją wyłącznie kawę rozpuszczalną (zalewaną świeżo przegotowaną wodą z czajnika elektrycznego). Jedyny sklep AGD w mieście oferuje różne czajniki elektryczne, ale przyjmuje pieniądze wyłącznie w gotówce. Masz do rozwiązania dwa problemy. Należy tak dobrać liczbę czajników elektrycznych, aby ich liczba była w biurze jak najmniejsza do zalania wszystkich kubków w jednym czasie. Po zalaniu nie może zostać niewykorzystana woda. Podczas zakupu nie należy kierować się ceną czajników. Następnie należy z banku tak wybrać gotówkę, by zapłacić jak najmniejszą liczbą banknotów. Zakładamy, że: czajniki mają pojemność równą liczbie kubków, które mogą zalać. Liczba ta jest zawsze liczbą całkowitą; sklep przechowuje nieograniczoną liczbę czajników wszystkich rodzajów; istnieją następujące pojemności czajników: 00, 100, 0, 0, 10,, i 1; każdy programista pije jedną kawę dziennie. Wodę w czajniku można zagotować tylko raz dziennie; środkiem płatniczym są wyłącznie banknoty (o całkowitych nominałach: 00, 100, 0, 0, 10,, i 1). Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą p (1 p 10000) oznaczającą liczbę programistów w zespole. Dalej następuje 8 wierszy: i-ty z nich zawiera dwie liczby całkowite, opisujące i-ty czajnik: po i (1 po i p), tj. pojemność, wyrażoną w kubkach, które można zalać oraz cenę c i (1 c i 10000). Na wyjściu oczekujemy jednego wiersza z dwoma liczbami całkowitymi. Pierwsza z nich oznacza liczbę wszystkich czajników, które należy kupić. Druga oznacza liczbę banknotów, które należy wybrać z banku. Dla następującego wejścia: 310 86 0 490 1 1771 10 6479 0 78 00 7043 100 9093 7 oczekujemy, że na wyjściu zostanie wypisane: 19 679 Oznacza to, że dla 310 programistów trzeba zakupić 19 czajników (jest to najmniejsza liczba czajników, potrzebna do zalania 310 kubków). Aby za nie zapłacić trzeba wybrać 679 banknotów z banku (jest to najmniejsza liczba banknotów, wystarczająca na zakup wspomnianych 19 czajników). I KPToP Team of Programmers, WIMiI, PCz
Zadanie 3 Sposobem szyfrowania ROTX (1 X ) będziemy nazywać każde szyfrowanie, w którym każda litera alfabetu jest cyklicznie przesuwana o X pozycji do przodu. Cykliczne przesunięcie oznacza zamianę znaku na odpowiedni znak, znajdujący się X pozycji dalej w alfabecie łacińskim, przy czym przesunięcie litery z daje literę a. owo ROT3 (szyfr Cezara) oznacza przesunięcie każdej litery o trzy pozycje do przodu. Napis "abc" zaszyfrowany sposobem ROT3 przyjmie postać "def", ponieważ a zostało przesunięte na literę d (a -> b -> c -> d), b na e (b -> c -> d -> e) a c na f (c -> d -> e -> f). Zostałeś zatrudniony (w niewymienionej z nazwy instytucji) jako specjalista, którego zadaniem jest rozszyfrowanie depeszy. Depesza została zaszyfrowana jakimś kodem ROT, problem polega na tym, że nieznana jest wartość X. Jedyne co wiesz to to, że wszystkie depesze (przed szyfrowaniem) podpisywane są nazwiskiem "kloss". W zadaniu zakładamy, że posługujemy się słowami ze słownika języka polskiego, zapisanymi małymi literami z alfabetu angielskiego (polskie i obcojęzyczne litery zostały zamienione na odpowiadające im litery alfabetu angielskiego). Pierwszy wiersz wejścia zawiera jedną liczbę całkowitą t (1 t 000), oznaczającą liczbę przypadków testowych do rozważenia. Dalej następuje t wierszy; i-ty z nich zawiera jedną liczbę całkowitą n i (3 n i 000) oraz n i słów, oddzielonych spacjami. Słowa te można uznać za i-tą depeszę, wspomnianą w treści zadania. Oczekujemy, że Twój program wypisze dokładnie t wierszy. W i-tym wierszu powinna znaleźć się liczba wystąpień litery z w odszyfrowanej i-tej depeszy. 3 4 saolmxwaiuook ndazaiuook iuqxaeouqzzm wxaee naixqnoea viwvuswju zkohwzvwjewie jeaokhksaf ghkoo 6 xyyleyxmuylwkg jceyagi qgybjyk xyugqrly lgcnpxwqngcqxyhyacem ijmqq 1 3 Natomiast dla wejścia: 6 uplwvkrhkghqhjfjo wyglthdphqhjlq hylaohjo uplwvwplshavzghyhdlnv ghyglrhshz rsvzz 6 avrjlqmjvtavrpvrz telpmnaxbz fmnagnmhwrpvr avrjlxelglpu qjhehaqbjlzv xybff tokxufucgtksa tokvujcorktyie tokvuhgjgtous toknejxuyzgzeifteso qruyy 6 zuqbkdlkowuq zuqbayelolazk naxqykexaikot zqawxmekokefkolzqsa ymzwuqf wxaee 4 gkopjaf zaxjewju ywxwhw ghkoo 4 4 0 I KPToP 3 Team of Programmers, WIMiI, PCz
Zadanie 4 Zostałeś zatrudniony w firmie szkoleniowej jako programista, który ma napisać system upraszczający ocenę kursantów. Uproszczenie to polega na stworzeniu prostego raportu, przedstawiający dla każdej grupy kursantów, którzy z egzaminu końcowego otrzymali więcej punktów od mediany 1 liczby punktów z egzaminu. Mediana ta jest obliczana z wyników całego kursu (nie pojedynczej grupy, tylko wszystkich). Zakładamy, że końcowy raport ma postać mapy bitowej (0 - wynik kursanta jest poniżej lub równy medianie, 1 - wynik kursanta jest powyżej mediany), w której kursanci ustawieni są rosnąco według numerów kursanta. Na przykład, z pewnego egzaminu uzyskano następujące wyniki: Numer kursanta Grupa kursanta Wynik 1. 1 3 1 4. 4 4 1 3. 1 0 0 Mediana jest równa 4.. Dla grupy pierwszej mapa bitowa zostanie przedstawiona następująco: gdyż kursant numer napisał egzamin z wynikiem powyżej mediany, kursanci numer 3 i równo lub poniżej mediany. Dla grupy drugiej mapa wygląda następująco: 1 0 gdyż kursant numer 1 napisał egzamin z wynikiem powyżej mediany, a kursant numer 4 poniżej mediany. Pierwszy wiersz zawiera opis kursu: jedną liczbę naturalną k (1 k 0000) oznaczającą liczbę kursantów oraz jedną liczbę naturalną g oznaczającą liczbę grup (1 g k). Kursant należy zawsze do którejś grupy, natomiast grupa może nie posiadać żadnego kursanta. Zakładamy, że grupy są numerowane od 1 do g. Drugi wiersz zawiera opis egzaminu: liczbę rzeczywistą m ( m 1000) oznaczającą maksymalną możliwą liczbę punktów na egzaminie oraz liczbę rzeczywistą d (0, 1 d 1000) oznaczającą najmniejszą, dodatnią możliwą różnicę pomiędzy dwoma wynikami. Zakładamy (nie jest to element wejścia), że istnieje taka liczba naturalna n, dla której n d = m. Zakładamy również, że d ma co najwyżej dwie cyfry po przecinku. Następnie następuje k wierszy, w których umieszczono trzy liczby: liczbę naturalną nr (1 nr k) oznaczającą numer kursanta, liczbę naturalną nrg (1 nrg g) oznaczającą numer grupy, do której należy dany kursant oraz liczbę rzeczywistą w (0 w m) oznaczającą uzyskany wynik na egzaminie. Podobnie jak w przypadku wartości d założono, że w ma co najwyżej dwie cyfry po przecinku. Twojego programu powinno być złożone z g wierszy (tyle, ile jest grup). W każdym wierszu znajduje się jedna wartość całkowita albo łańcuch znaków. Jeżeli w danej grupie znajduje się co najmniej jeden kursant, to wypisywana jest długość najdłuższego spójnego podciągu z mapy bitowej danej grupy, złożonego z samych zer. Jeżeli w danej grupie wszyscy kursanci napisali powyżej mediany, to należy wypisać 0. Jeżeli dana grupa nie posiadała żadnego kursanta, to należy wypisać łańcuch znaków BRAK. 1 Aby obliczyć medianę ze zbioru n obserwacji, sortujemy je w kolejności od najmniejszej do największej i numerujemy od 1 do n. Następnie, jeśli n jest nieparzyste, medianą jest wartość obserwacji w środku (czyli obserwacji numer n+1 ). Jeśli natomiast n jest parzyste, wynikiem jest średnia arytmetyczna między dwiema środkowymi obserwacjami, czyli obserwacją numer n i obserwacją numer n + 1 Wikipedia, hasło dla mediany I KPToP 4 Team of Programmers, WIMiI, PCz
3 6 0. 1. 1 3. 4 4 1 3 1 4. 1 BRAK Wyjaśnienie przykładu W danym szkoleniu uczestniczyło pięciu kursantów, podzielonych na trzy grupy. Egzamin można było napisać na maksymalnie 6 punktów, z krokiem co 0. punktu. Wyniki kursantów odpowiadają tym przedstawionym w przykładzie w treści zadania (wyniki są podane w losowej kolejności). Jedyna różnica polega na istnieniu grupy 3, do której nie uczęszczał żaden kursant. Mapy bitowe dla każdej z grup przedstawiają się następująco: Numer grupy Mapa bitowa Wyjaśnienie 1 1 0 0 kursant - powyżej mediany, kursant 3 - równo, kursant - poniżej 1 0 kursant 1 - powyżej mediany, kursant 4 poniżej 3 brak kursantów W zapisie map dla grupy pierwszej najdłuższy (i jedyny) spójny podciąg zer ma długość a dla grupy drugiej najdłuższy (i jedyny) spójny podciąg zer ma długość 1. W grupie trzeciej nie uczestniczył żaden kursant, więc zgodnie z treścią zadania wypisano napis BRAK. I KPToP Team of Programmers, WIMiI, PCz