Zadanie: A2 — Kapitan Mambeks i gra w skoczki
Transkrypt
Zadanie: A2 — Kapitan Mambeks i gra w skoczki
Koło Młodych Informatyków - Konkurs nr 2 23-01-2010 Zadanie: A2 — Kapitan Mambeks i gra w skoczki Plik źródłowy: A2.pas A2.c A2.cpp dla języka Pascal dla języka C dla języka C++ Dostępna pamięć: 64 MB Ulubionym zajęciem Kapitana Mambeksa jest gra w skoczki. Gra toczy się na planszy składającej się z n pól o numerach 1, . . . , n ułożonych w jednym wierszu w porządku rosnącym. 1 2 3 4 5 6 W stanie początkowym pionek znajduje się w polu nr 1, a następnie jest on przemieszczany na kolejne pola przez dokonywanie skoków. Pierwszy skok musi mieć długość równą 1, a więc jest to skok na pole nr 2. Kolejne skoki muszą spełniać jedno z założeń: • Jeżeli skok odbywa się w przód, tj. na pole o numerze większym niż pole na którym znajduje się pionek, to musi mieć on długość o jeden większą niż długość poprzedniego skoku. • Jeżeli skok odbywa się w tył, tj. na pole o numerze mniejszym niż pole na którym znajduje się pionek, to musi mieć on taką samą długość jak długość poprzedniego skoku. Przykładowo, po wykonaniu pierwszego skoku na pole nr 2 można dokonać skok w przód na pole nr 4 lub skok w tył na pole nr 1. Każde pole planszy ma przypisany koszt jaki trzeba ponieść dokonując skoku na to pole. Celem gry jest przemieszczenie pionka z pola nr 1 na pole nr n tak, aby ponieść minimalny koszt. Twoim zadaniem jest napisanie programu, który dla zadanej planszy wyznaczy minimalny koszt przemieszczenia pionka z pola nr 1 na pole nr n. Specyfikacja wejścia Wejście zawiera wiele zestawów danych testowych. Pierwszy wiersz pojedynczego zestawu danych zawiera liczbę n (2 ¬ n ¬ 1000) będącą liczbą pól planszy do gry. Kolejnych n wierszy zawiera jedną liczbę całkowitą k (0 < k < 500) będącą kosztem jaki trzeba ponieść dokonując skok na dane pole, przy czym wiersz i–ty zawiera koszt dla pola o numerze i. Dane wejściowe zakończone są wierszem zawierającym liczbę 0. Specyfikacja wyjścia Dla każdego zestawu danych należy wypisać jaki jest minimalny koszt przemieszczenia pionka z pola nr 1 na pole nr n. Koło Młodych Informatyków - Konkurs nr 2 Przykładowe wejście 5 1 2 3 4 5 7 1 1 1 1 1 1 1 15 5 3 8 9 11 4 2 13 5 8 2 5 3 7 14 0 Przykładowe wyjście 13 3 42 23-01-2010 Koło Młodych Informatyków - Konkurs nr 2 23-01-2010 Zadanie: B2 — Kapitan Mambeks i działki w przestrzeni kosmicznej Plik źródłowy: B2.pas B2.c B2.cpp dla języka Pascal dla języka C dla języka C++ Dostępna pamięć: 64 MB Kapitan Mambeks w ostatnim czasie zajmuje się przydziałem działek budowlanych w kosmicznej przestrzeni trójwymiarowej. Każda działka ma kształt prostokąta i jest ona równoległa do jednej z płaszczyzn wymiaru. Niestety Kapitan popełnił poważne błędy ponieważ niektóre pary działek mają co najmniej jeden punkt wspólny co doprowadziło do konfliktów między właścicielami przydzielonych działek. Twoim zadaniem jest napisanie programu, który dla zadanego planu przydziału działek wyznaczy liczbę par działek, które powodują konflikt. Specyfikacja wejścia Wejście zawiera wiele zestawów danych testowych. Pierwszy wiersz pojedynczego zestawu danych zawiera liczbę n (1 ¬ n ¬ 100 000) będącą liczbą działek. Kolejnych n wierszy zawiera 6 liczb całkowitych: x1 , y1 , z1 , x2 , y2 , z2 (0 < x1 , y1 , z1 , x2 , y2 , z2 < 1000) oddzielonych od siebie pojedynczym odstępem. Liczby (x1 , y1 , z1 ) są współrzędnymi jednego z wierzchołków prostokątnej działki, natomiast (x2 , y2 , z2 ) są współrzędnymi przeciwległego wierzchołka, tj. wierzchołka po przekątnej. Ponieważ powierzchnia działki jest równoległa do jednej z płaszczyzn wymiaru, dlatego jedne z odpowiednich współrzędnych wymiaru są sobie równe, tj. x1 = x2 lub y1 = y2 lub z1 = z2 . Można przyjąć, że pole każdej działki jest większe od zera. Dane wejściowe zakończone są wierszem zawierającym liczbę 0. Specyfikacja wyjścia Dla każdego zestawu danych należy wypisać liczbę par działek powodujących konflikt, tj. mających co najmniej jeden punkt wspólny. Koło Młodych Informatyków - Konkurs nr 2 Przykładowe wejście 3 10 1 10 20 1 20 20 1 40 40 1 20 80 1 80 40 1 40 3 10 1 10 40 1 40 10 2 10 40 2 40 10 3 10 40 3 40 3 10 10 1 40 40 1 20 5 20 50 5 50 10 10 60 30 50 60 4 1 1 2 5 1 20 5 1 5 5 20 30 1 1 3 10 15 3 2 2 2 8 2 3 4 1 1 1 20 20 1 3 3 1 18 18 1 5 5 1 15 15 1 7 7 1 10 10 1 4 1 1 1 2 2 1 2 1 1 3 2 1 1 2 1 1 3 1 2 2 1 3 3 1 0 Przykładowe wyjście 2 0 0 3 6 6 23-01-2010 Koło Młodych Informatyków - Konkurs nr 2 23-01-2010 Zadanie: C2 — Kapitan Mambeks i butelki z wodą Plik źródłowy: C2.pas C2.c C2.cpp dla języka Pascal dla języka C dla języka C++ Dostępna pamięć: 64 MB Kapitan Mambeks ma n butelek wody gazowanej i m butelek wody niegazowanej. Swoje zasoby wody postanowił rozdzielić pomiędzy pewną liczbę osób, przy czym podział postanowił dokonać w taki sposób, aby każda osoba otrzymała taką samą liczbę butelek wody gazowanej i taką samą liczbę butelek wody niegazowanej. Załóżmy, że Kapitan ma n = 4 butelek wody gazowanej i m = 12 butelek wody niegazowanej. Kapitan może podzielić wodę na 3 sposoby: • Woda jest przydzielana tylko jednej osobie, otrzymuje ona wszystkie 4 butelki wody gazowanej i wszystkie 12 butelek wody niegazowanej. • Woda jest rozdzielana pomiędzy 2 osoby, każdy otrzymuje 2 butelki wody gazowanej i 6 butelek wody niegazowanej. • Woda jest rozdzielana pomiędzy cztery osoby, każdy otrzymuje jedną butelkę wody gazowanej i 3 butelki wody niegazowanej. Twoim zadaniem jest napisanie programu, który wyznaczy na ile sposobów Kapitan może podzielić wodę pomiędzy osoby. Specyfikacja wejścia Wejście zawiera wiele zestawów danych testowych. Każdy zestaw danych składa się z jednego wiersza zawierającego dwie liczby całkowite n, m (1 ¬ n, m ¬ 1 000 000 000) będące odpowiednio liczbą butelek wody gazowanej i niegazowanej. Dane wejściowe zakończone są wierszem zawierającym dwie liczby 0. Specyfikacja wyjścia Dla każdego zestawu danych należy wypisać dwie liczby całkowite a, b oddzielone pojedynczym odstępem, gdzie a jest liczbą sposobów na jakie można podzielić wodę, natomiast b jest maksymalną liczbą osób jakie mogą otrzymać wodę. Koło Młodych Informatyków - Konkurs nr 2 Przykładowe wejście 4 12 16 32 17 35 75 30 0 0 Przykładowe wyjście 3 5 1 4 4 16 1 15 23-01-2010 Koło Młodych Informatyków - Konkurs nr 2 23-01-2010 Zadanie: D2 — Kapitan Mambeks i potrawa słodkokwaśna Plik źródłowy: D2.pas D2.c D2.cpp dla języka Pascal dla języka C dla języka C++ Dostępna pamięć: 64 MB Ulubionym przysmakiem Kapitana Mambeksa jest potrawa słodko-kwaśna. Potrawa jest sporządzana z kilku składników, które wybierane są ze zbioru n składników. Każdy składnik ma pewną własność słodkości s i pewną własność kwaśności k. Słodkość potrawy jest równa iloczynowi własności słodkości wszystkich składników z których została ona sporządzona, z kolei kwaśność potrawy jest równa sumie własności kwaśności tych składników. Niech przykładowo potrawa składa się z trzech składników o następujących własnościach: (s1 = 2, k1 = 4); (s2 = 3, k2 = 5); (s3 = 5, k3 = 6). Słodkość potrawy jest więc równa: s1 ∗ s2 ∗ s3 = 2 ∗ 3 ∗ 5 = 30, a jej kwaśność: k1 + k2 + k3 = 4 + 5 + 6 = 15. Potrawa Kapitana ma jedną ważną własność, gdyż jej słodkość i kwaśność powinny mieć zbliżone wartości. Twoim zadaniem jest, mając dany zbiór składników, ustalić dobór składników tak, aby różnica między słodkością i kwaśnością była minimalna. Należy jednak pamiętać o tym, że potrawa musi zawierać co najmniej jeden składnik. Specyfikacja wejścia Wejście zawiera wiele zestawów danych testowych. Pierwszy wiersz pojedynczego zestawu danych zawiera liczbę całkowitą n (1 ¬ n ¬ 10) będącą liczbą dostępnych składników. Kolejnych n wierszy zawiera opisy składników. Każdy wiersz zawiera dwie dodatnie liczby całkowite s, k określające własność słodkości i kwaśności składnika. Dane są tak dobrane, aby słodkość i kwaśność potrawy sporządzonej ze wszystkich dostępnych składników były mniejsze niż 1 000 000 000. Dane wejściowe zakończone są wierszem zawierającym liczbę 0. Specyfikacja wyjścia Dla każdego zestawu danych należy wypisać najmniejszą różnicę między słodkością i kwaśnością potrawy jaką można sporządzić z dostępnych składników. Koło Młodych Informatyków - Konkurs nr 2 Przykładowe wejście 1 5 10 1 10 5 4 2 8 5 3 3 7 4 5 3 3 8 3 8 3 8 4 4 7 2 9 1 5 6 8 0 Przykładowe wyjście 5 5 0 3 2 23-01-2010