In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you would like to talk about tasks, solutions or technical problems, please visit our Discord servers. They are moderated by the community, but members of the support team are also active there.
Starożytni Babilończycy postanowili zbudować ogromną wieżę. Wieża będzie składać się z sześciennych bloków położonych jeden na drugim. Babilończycy zebrali z całego państwa wiele bloków różnych rozmiarów. Z ostatniej, nieudanej próby budowy dowiedzieli się, że jeśli ustawią większy blok bezpośrednio na dużo mniejszym, wieża przewróci się.
Zakładamy, że każde dwa bloki są różne, nawet jeśli są jednakowej wielkości. Dla każdego bloku znasz długość jego boku. Masz również daną liczbę całkowitą , oznaczającą, że nie wolno położyć bloku bezpośrednio na bloku dokładnie wtedy, gdy długość boku bloku jest ściśle większa niż plus długość boku bloku .
Oblicz liczbę różnych sposobów zbudowania wieży ze wszystkich bloków. Ponieważ wynik może być bardzo duży, wypisz resztę z dzielenia go przez .
Pierwszy wiersz wejścia składa się z dwóch liczb całkowitych dodatnich oraz : liczby bloków oraz tolerancji określonej jak wyżej.
Drugi wiersz zawiera pooddzielanych pojedynczymi odstępami liczb całkowitych; każda z nich jest długością boku jednego z bloków.
Wszystkie liczby na wejściu są całkowite, dodatnie i nie przekraczają .
jest zawsze równe co najmniej 2.
W testach wartych 70 punktów nie przekroczy 70.
Wśród nich są testy warte 45 punktów, w których będzie równe co najwyżej 20.
Wśród tych z kolei są testy warte 10 punktów, w których będzie równe co najwyżej 10.
W części testów całkowita liczba poprawnych wież będzie nie większa niż . Te testy są warte łącznie 30 punktów.
W ostatnich sześciu testach (wartych 30 punktów) będzie większe niż 70. Górne ograniczenie na w tych testach nie jest podane.
Wypisz jeden wiersz zawierający jedną liczbę całkowitą: liczbę wież, które można zbudować, modulo .
Dla danych wejściowych:
4 1 1 2 3 100
poprawną odpowiedzią jest:
4
Pierwsze trzy bloki można uporządkować w dowolnej kolejności poza oraz . Ostatni blok musi leżeć na spodzie.
Dla danych wejściowych:
6 9 10 20 20 10 10 20
poprawną odpowiedzią jest:
36
Nie można położyć bloku o boku 20 na bloku o boku 10. Istnieje sześć sposobów uporządkowania bloków o boku 10 i sześć sposobów uporządkowania bloków o boku 20.
Autor zadania: Michal Forisek.