rooks

Time limit: 0.2s Memory limit: 128MB Input: rooks.in Output: rooks.out

Se consideră o tablă de șah sub forma unei matrice cu MM linii si NN coloane conținând caracterele . si #. Celulele care conțin # sunt considerate interzise și nu se pot așeza turnuri în ele. Celulele interzise nu blochează atacurile turnurilor.

Cerința

Să se calculeze XX, numărul de posibilități de a așeza turnuri în celulele neinterzise, astfel încât să nu existe doua turnuri așezate pe aceeași linie sau pe aceeași coloana. Deoarece acest număr poate fi foarte mare, se va determina XX modulo 1 000 0031 \ 000 \ 003.

Date de intrare

Fișierul de intrare rooks.in conține pe prima linie numerele MM si NN, iar pe fiecare dintre următoarele MM linii se afla câte NN caractere . sau #. Atenție, caracterele de pe o linie nu sunt separate prin spațiu.

Date de ieșire

Fișierul de ieșire rooks.out conține un singur număr natural, numărul XX modulo 1 000 0031 \ 000 \ 003.

Restricții și precizări

  • 1M,N1 0001 \leq M, N \leq 1 \ 000;
  • Vor exista cel mult 1717 celule interzise

Exemplu

rooks.in

3 3
..#
##.
#.#

rooks.out

10

Explicație

Este o soluție cu zero turnuri, sunt patru soluții cu un turn, patru soluții cu două turnuri si o soluție cu trei turnuri.

Log in or sign up to be able to send submissions!