CSES - Datatähti 2019 alku - Ruudukko
  • Time limit: 1.00 s
  • Memory limit: 512 MB

Tehtäväsi on sijoittaa n \times n -ruudukkoon merkkejä A ja B niin, että jokaisessa ruudussa on enintään yksi merkki ja jokaisella pysty- ja vaakarivillä on tarkalleen yksi merkki A ja yksi merkki B.

Lisähaasteena osa merkeistä on sijoitettu valmiiksi. Monellako tavalla voit täydentää ruudukon valmiiksi?

Syöte

Syötteen ensimmäisellä rivillä on kokonaisluku n: ruudukon koko.

Tämän jälkeen syötteessä on n riviä, jotka kuvaavat ruudukon alkutilanteen. Jokaisella rivillä on n merkkiä. Merkki . tarkoittaa tyhjää ruutua, ja merkit A ja B ilmaisevat valmiiksi ruudukossa olevat merkit.

Voit olettaa, että syötteessä jokaisella pysty- ja vaakarivillä on enintään yksi merkki A ja enintään yksi merkki B.

Tuloste

Tulosta yksi kokonaisluku: tehtävän vastaus modulo 10^9+7.

Esimerkki

Syöte:

5
.....
..AB.
.....
B....
...A.

Tuloste:

16

Osatehtävä 1 (31 pistettä)

  • 2 \le n \le 5

Osatehtävä 2 (14 pistettä)

  • 2 \le n \le 500
  • ruudukossa ei ole valmiina mitään merkkejä

Osatehtävä 3 (55 pistettä)

  • 2 \le n \le 500