Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Contest problemset description


Ala ma kota
(A)
Limit pamięci: 64 MB
Limit czasu: 1.00 s

Każdy już słyszał, że Ala ma kota. Ale czy ktoś kiedyś sprawdził, czy podciąg ma Alę? Twoim zadaniem jest sprawdzić czy w ciągu znaków złożonym z małych liter alfabetu angielskiego znajduje się podciąg (niekoniecznie spójny) ala.

Wejście

W pierwszym i jedynym wierszu wejścia znajduje się ciąg znaków S złożony z małych liter alfabetu angielskiego.

Wyjście

W pierwszym i jedynym wierszu wyjścia powinno znaleźć się słowo TAK, jeżeli w słowie S występuje podciąg ala, lub jedno słowo NIE w przeciwnym wypadku.

Ograniczenia

1 ≤ |S| ≤ 1 000 000.

Przykład

Wejście Wyjście
malwina
TAK
Wejście Wyjście
kotmaale
NIE

Proste wyrażenie
(B)
Limit pamięci: 64 MB
Limit czasu: 1.00 s

Dane jest jedno wyrażenie postaci A1B2C, gdzie A, B oraz C są nieujemnymi liczbami całkowitymi, a 1 oraz 2 są jednym z czterech możliwych działań arytmetycznych ze zbioru +, , oraz ÷. Twoim zadaniem jest policzyć wartość takiego wyrażenia, zachowując kolejność wykonywania działań. Dla przypomnienia, mnożenie oraz dzielenie wykonujemy przed dodawaniem i odejmowaniem, natomiast mnożenie i dzielenie czy dodawanie i odejmowanie wykonujemy w kolejności od lewej do prawej.

Wejście

W pierwszym i jedynym wierszu wejścia znajduje się wyrażenie postaci A1B2C, gdzie A, B, C są nieujemnymi liczbami całkowitymi, a 1 oraz 2 są jednym ze znaków +, -, * oraz / oznaczających odpowiednio dodawanie, odejmowanie, mnożenie oraz dzielenie. Liczby oraz działania są od siebie odseparowane pojedynczą spacją.

Wyjście

W jedynym wierszu wyjścia należy wypisać jedną liczbę całkowitą będącą wynikiem działania. Możesz założyć, że dane wejściowe są tak dobrane, że niezależnie od wstawienia znaków nie nastąpi dzielenie przez 0 ani dzielenie niecałkowite.

Ograniczenia

0 ≤ A, B, C ≤ 1 000 000.

Przykład

Wejście Wyjście
2 + 2 * 2
6
Wejście Wyjście
12 / 6 / 2
1

Rysowanie zamku
(C)
Limit pamięci: 256 MB
Limit czasu: 4.00 s

Wiktor walczy z zadaniem Zamek z XXIV Olimpiady Informatycznej. Zadanie ma już prawie rozwiązane, ale niestety, nie działa na niektórych przygotowanych przez niego testach. Wiktor mógłby łatwiej zdebugować program, gdyby przygotowane przez niego testy mógł wyświetlić w terminalu.

Mapa zamku naniesiona jest na układ współrzędnych i mieści się w całości w prostokącie, którego lewy dolny róg znajduje się w punkcie (0,0), a prawy górny róg w (w,h). Zamek dzieli się na komnaty, które w całości wypełniają zamek. Jedna z komnat jest komnatą początkową, a jedna końcową. Niektóre z komnat mogą być zablokowane. Napisz kod, który wczyta opis zamku i narysuje go jako ASCII-art na ekranie!

Wejście

W pierwszym wierszu standardowego wejścia znajdują się cztery liczby naturalne w, h, N i M, oznaczające odpowiednio wymiar mapy, liczbę komnat zamku oraz liczbę blokad. W drugim wierszu znajduje się para liczb xp, yp oznaczające współrzędne punktu początkowego. W trzecim wierszu znajdują się liczby xs, ys oznaczające współrzędne punktu końcowego. Obie pary współrzędnych znajdują się wewnątrz pewnej komnaty (a nie na brzegu).

W następnych N wierszach znajdują się opisy komnat, i-ty z nich zawiera cztery liczby całkowite x1, y1, x2, y2 oznaczające, że prostokąt odpowiadający i-tej komnacie ma przeciwległe wierzchołki w punktach (x1,y1) oraz (x2,y2).

W następnych M wierszach znajdują się opisy blokad. i-ty z nich składa się z dwóch liczb całkowitych x, y oznaczających, że komnata zawierająca punkt (x,y) jest zablokowana.

Wyjście

Na wyjściu należy narysować ASCII-art odpowiadający mapie zamku. Ze względu na to, że wszystkie znaki mają tę samą szerokość i wysokość, należy myśleć, że osie pionowe i poziome układu współrzędnych (tj. wszystkie proste pionowe i poziomie przechodzące przez punkty kratowe) mają tę samą szerokość i wysokość, co kwadraty 1 × 1 pomiędzy nimi. Zatem pierwsze pole pierwszego wiersza wyjścia reprezentuje punkt (0,h), a pole o rogach w (0,h) oraz (1,h−1) reprezentuje drugi znak drugiego wiersza. Rogi wszystkich komnat powinny zostać oznaczone znakiem +. Pionowe ściany komnat powinny zostać narysowane przy użyciu znaków |, poziomie przy pomocy -. Punkt początkowy powinien zostać oznaczony przy pomocy pojedynczego znaku P. Punkt końcowy powinien zostać oznaczony przy pomocy pojedynczego znaku S. Zablokowane komnaty powinny zostać w całości wypełnione znakami X. W innym razie powinny być wypełnione znakami spacji. Dla rozjaśnienia zalecane jest zapoznanie się z testem przykładowym.

Ograniczenia

1 ≤ w, h ≤ 2000, 1 ≤ N, M ≤ 1 000 000, wszystkie współrzędne x, y spełniają nierówności 0 ≤ x ≤ w, 0 ≤ y ≤ h.

W testach wartych 50% punktacji zachodzi dodatkowy warunek M = 0 (tzn. nie występują żadne blokady).

Przykład

Wejście Wyjście
7 6 9 3
1 1
6 4
0 0 3 2
3 1 6 3
3 0 5 1
5 0 7 1
6 1 7 3
0 2 3 6
3 3 5 5
3 5 5 6
5 3 7 6
4 2
5 2
4 4
+-----+---+---+
|     |   |   |
|     +---+   |
|     |XXX|   |
|     |XXX| S |
|     |XXX|   |
|     +---+-+-+
|     |XXXXX| |
+-----+XXXXX| |
|     |XXXXX| |
| P   +---+-+-+
|     |   |   |
+-----+---+---+
Wejście Wyjście
5 5 4 0
1 1
4 4
0 0 3 3
0 3 3 5
3 0 5 2
3 2 5 5
+-----+---+
|     |   |
|     | S |
|     |   |
+-----+   |
|     |   |
|     +---+
|     |   |
| P   |   |
|     |   |
+-----+---+