In the event of technical difficulties with Szkopuł, please contact us via email at [email protected].
If you are familiar with IRC chat, the support team is also reachable on PIRC network (irc.pirc.pl
) in #szkopul
channel. If you are not, just use email.
Please do not ask us things like "how to solve task XYZ?".
Please remember that the support team has to sleep sometimes or go to work in real life.
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.