CSES - Lumilinna
  • Time limit: N/A
  • Memory limit: N/A

Uolevi rakastaa talvea ja haluaa rakentaa sen kunniaksi lumilinnan. Valitettavasti Uolevi on fiktiivinen henkilö, eikä siksi osaa rakentaa. Auta pelastamaan Uolevin joulu suunnittelemalla hänen unelmalinnansa!

Uolevin mielestä linnan pitää olla täsmälleen 102 ruutua leveä ja korkea. Jokaisen ruudun on oltava joko täysin tyhjä ('.') tai sisällettävä tukeva lumiseinä ('#'). Kaikista tyhjistä ruuduista on voitava kulkea toisiinsa ja ulkoreunalla on oltava tasan yksi sisäänkäynti (tyhjä ruutu).

Tämän lisäksi Uolevi haluaa linnan sisätilojen olevan tietynlaiset. Tarkemmin sanottuna Uolevilla on mielessään kuinka monta kappaletta kutakin mahdollista 3 \times 3 aliruudukkoa lumilinnasta pitäisi löytyä.

Esimerkiksi lumilinna

#.##
#..#
#.##
####

sisältää aliruudukot

#.#  .##  #..  ..#
#..  ..#  #.#  .##
#.#  .##  ###  ###

Syöte

Uolevin toiveet on listattu tiedostossa data.in. Ensimmäinen rivi sisältää erilaisten toivottujen 3 \times 3 -kokoisten ruudukoiden määrän n. Seuraavat 4n riviä kuvaavat jokaisen toiveen: kunkin toiveen ensimmäisellä rivillä lukee kuinka monta kopiota seuraavien kolmen rivin esittämää aliruudukkoa linnasta tulisi löytyä.

Tuloste

Tehtävään palautetaan yksi tekstitiedosto, jonka tulee sisältää täsmälleen 102 \times 102 merkkiä ruudukossa kuvaten Uolevin toivelinnan. Saat 10^{-4} pistettä jokaisesta toiveesta, jonka onnistut täyttämään. Lopuksi keräämäsi pistemäärä neliöidään ja kerrotaan sadalla, eli täydet 100 pistettä saat täyttämällä kaikki 10000 toivetta.