Zoznam úloh

8. Pochúťka

Kolo už skončilo. Môžeš si pozrieť vzorové riešenie.

Paulinka[^1] mala jedného dňa robiť úlohu z databáz. Ako písala riešenie, uvedomila si, že jedáleň práve zatvorila. Bola nedeľa, takže aj všetky obchody boli zatvorené. Žiaľ, musela pokračovať v písaní o hlade a tak miesto databáz Paulinka premýšľala o koláčoch. A tak to aj skončilo. Jej domáca úloha obsahovala databázy všelijakých koláčov.

Keď prišla z ďalekého západu na prázdniny domov, rozhodla sa, že taká databáza koláčov je výborný nápad. Išla ho teda zrealizovať. Po chvíli plánovania prišla na to, že databáza predsalen nie je najlepší spôsob pre uloženie koláčov a namiesto databázy upečie maticu koláčov.

Matica mala $r$ riadkov a $s$ stĺpcov a Paulinka upiekla $n + m$ koláčov. Najskôr prvých $n$ položila tak, že $i$-ty bol v $(i \mod r)$-tom riadku a $(i \mod s)$-tom stĺpci.

Následne ešte na niektoré políčka matice položila zvyšných $m$ koláčov tak, ako sa jej to páčilo. Paulinka mohla položiť aj viacero koláčov do jedného políčka.

Ako finalizovala svoju maticu, rozhodla sa, že niektoré koláče ozdobí maslovým krémom. Samozrejme, nie len tak ledabolo! Každý riadok a každý stĺpec musí obsahovať nepárny počet ozdobených koláčov. Samozrejme, žiadne rearanžovanie koláčov!

Paulinka s krémom stojí nad maticou a premýšľa, ako to urobiť. Ide to vôbec? Koľkými spôsobmi?

Úloha

Koľkými spôsobmi ide ozdobiť koláče v horeuvedenom rozložení tak, aby v každom riadku a stĺpci matice bol nepárny počet ozdobených koláčov?

Dva spôsoby sú rôzne, ak je nejaký koláč ozdobený v jednom a neozdobený v druhom. V jednom políčku môže byť aj viac koláčov.

Formát vstupu

Na prvom riadku dostanete rozmery mriežky $r, s \leq 10^{9}$ a čísla $r + s \leq n \leq 10^{9}$ a $m \leq 10^{5}$ oddelené medzerou.

Na ďalšom riadku je $m$ čísel, $r_0$ až $r_{r-1}$, kde $r_i$ je riadok $n + i$-teho koláča.

Na treťom riadku je $m$ čísel, $s_0$ až $s_{s-1}$, kde $s_i$ je stĺpec $n + i$-teho koláča.

Riadky a stĺpce číslujeme od nuly.

V jednotlivých sadách vstupov platia pre $r$, $s$, $n$ a $m$ nasledovné obmedzenia:

1 2 3 4 5 6 7 8
MATH_STASH_25_ENDSTASH MATH_STASH_26_ENDSTASH MATH_STASH_27_ENDSTASH MATH_STASH_28_ENDSTASH MATH_STASH_29_ENDSTASH MATH_STASH_30_ENDSTASH MATH_STASH_31_ENDSTASH MATH_STASH_32_ENDSTASH
MATH_STASH_33_ENDSTASH MATH_STASH_34_ENDSTASH MATH_STASH_35_ENDSTASH MATH_STASH_36_ENDSTASH MATH_STASH_37_ENDSTASH MATH_STASH_38_ENDSTASH MATH_STASH_39_ENDSTASH MATH_STASH_40_ENDSTASH
MATH_STASH_41_ENDSTASH MATH_STASH_42_ENDSTASH MATH_STASH_43_ENDSTASH MATH_STASH_44_ENDSTASH MATH_STASH_45_ENDSTASH MATH_STASH_46_ENDSTASH MATH_STASH_47_ENDSTASH
MATH_STASH_48_ENDSTASH

Navyše, v tretej a siedmej sade stačí vypísať, či existuje aspoň jedno riešenie. Presnejšie, ak je odpoveď nula, tak program má vypísať nulu, a inak môže vypísať akékoľvek kladné číslo.

Formát výstupu

Vypíšte jedno číslo – počet rôznych spôsobov ozdobení koláčov. Keďže toto číslo môže byť veľmi veľké, vypíšte ho modulo $1\,000\,000\,009$.

Príklad

Input:

2 4 6 2
1 1
3 0

Output:

8

Jeden možný spôsob ozdobenia koláčov:

![](obrazky/prikl8b.png)

Input:

6 4 50 5
0 1 2 3 4
3 3 3 3 3

Output:

743544352

Tu je možností veľa.

Input:

2 4 6 2
1 0
3 2

Output:

0

  1. s krátkym i↩
Pre odovzdávanie sa musíš prihlásiť.
Trojsten

Korešpondenčný seminár z programovania zastrešuje občianske združenie Trojsten.

Kontakt
Ďalšie projekty