Piramida

Time limit: 3s Memory limit: 1024MB Input: piramida.in Output: piramida.out

Pe cămilă merg în față prin furtuna de nisip...

Robert s-a pierdut prin deșert, iar din cauza furtunii, el nu poate vedea la distanță.

Deșertul poate fi reprezentat ca o matrice cu NN linii și MM coloane. În fiecare celulă a matricei se află un tip de obiectiv (de exemplu, piramide, ruine labirintice, cactuși, dune) ce este reprezentat cu o literă mică a alfabetului englez.

Pentru a își da seama unde se află, Robert îi trimite mesaj lui Georgian cu ce tip de obiectiv vede în celula în care se află și se plimbă pentru a afla mai multe informații. Mai precis, acesta începe de pe o celulă oarecare, îi trimite lui Georgian litera celulei respective. El începe să se miște în celule adiacente ale celulei înspre nord, est, sud sau vest, iar de fiecare dată când intră într-o celulă vecină, îi trimite lui Georgian litera respectivă. Acesta poate trece de mai multe ori prin aceeași celulă și va trimite de fiecare dată mesaj lui Georgian.

Georgian observă că Robert este pus sub un blestem, și anume că pare să se plimbe în cercuri. Mai exact, șirul de caractere pe care îl trimite Robert este un șir de forma SKS \cdot K (stringul SS concatenat de KK ori).

Ajutați-l pe Georgian să își dea seama unde se află Robert!

Cerință

Dându-se matricea ce reprezintă harta deșertului, șirul de caractere SS și QQ interogări KiK_i, să se răspundă în câte poziții este plauzibil ca Robert să se afle știind că șirul de caractere primit de Georgian este SKiS \cdot K_i. Este plauzibil ca Robert să se afle într-o celulă a matricei dacă există un drum de la o celulă oarecare la cea considerată ce nu iese din matrice, iar șirul de caractere descris de drum este egal cu SKiS \cdot K_i.

Date de intrare

Fișierul de intrare piramida.in conține pe primul rând două numere separate printr-un singur spațiu NN și MM ce reprezintă numărul de linii, respectiv coloane ale matricei date.

Pe următoarele NN rânduri se vor afla câte un șir de caractere de lungime MM ce reprezintă fiecare linie ale matricei date.

Pe rândul N+2N + 2 se va afla șirul de caractere SS.

Pe rândul N+3N + 3 se va afla un singur întreg QQ ce reprezintă numărul de întrebări.

Pe următorul rând se vor afla QQ întregi KiK_i ce reprezintă întrebările la care trebuie să răspundă Georgian.

Date de ieșire

Fișierul de ieșire piramida.out conține pe un singur rând răspunsurile în ordine la cele QQ întrebări, separate prin câte un spațiu.

Restricții și precizări

  • 2N,M2002 \leq N, M \leq 200
  • 1|S|2001 \leq \text{\textbar}S\text{\textbar} \leq 200
  • 1Q100 0001 \leq Q \leq 100 \ 000
  • 1Ki1 000 000 0001 \leq K_i \leq 1 \ 000 \ 000 \ 000 pentru ii de la 11 la QQ
  • KiKi+1K_i \leq K_{i+1} pentru ii de la 11 la Q1Q - 1. Cu alte cuvinte, șirul KK este dat în ordine crescătoare.
# Punctaj Restricții
1 6 N,M,|S|5N, M, \text{\textbar}S\text{\textbar} \leq 5, Q=1Q = 1, K1=1K_1 = 1
2 13 |S|25\text{\textbar}S\text{\textbar} \leq 25, Q,Ki100Q, K_i \leq 100
3 10 N,M,|S|20N, M, \text{\textbar}S\text{\textbar} \leq 20
4 9 N,M,|S|55N, M, \text{\textbar}S\text{\textbar} \leq 55
5 16 N,M,|S|100N, M, \text{\textbar}S\text{\textbar} \leq 100
6 46 Fără restricții suplimentare

Exemplul 1

piramida.in

3 4
cbaz
azzz
bczz
abc
3
1 2 3

piramida.out

2 1 0

Explicație

În primul exemplu, la prima întrebare, Robert observă șirul de caractere abc. Acesta se poate afla la sfârșit pe celula de pe prima linie și prima coloană sau pe celula de pe a treia linie și a doua coloană.
Astfel, răspunsul la prima întrebare este 22.

Pentru a doua întrebare, Robert observă șirul de caractere abcabc. Asta înseamnă că acesta se poate afla la sfârșit pe celula de pe a treia linie și a doua coloană. Astfel, răspunsul este 11.

Pentru a treia întrebare, Robert observă șirul de caractere abcabcabc. Nu există nicio celulă în care acesta s-ar putea afla în matrice, astfel răspunsul este 00 (Robert este o cauză pierdută).

Exemplul 2

piramida.in

1 5
aabaa
aaab
2
1 2

piramida.out

1 1

Explicație

În al doilea exemplu, pentru prima întrebare, Robert observă șirul de caractere aaab. Acesta poate începe fie de pe a doua coloană, fie de pe a patra coloană iar în final să ajungă în ambele cazuri pe a treia coloană. Răspunsul este astfel 11. A se observa că dacă începe de pe prima sau ultima coloană, nu există drum care să reflecte șirul de caractere transmis de Robert.

Pentru a doua întrebare, Robert observă șirul de caractere aaabaaab. Toate drumurile valide pe care le va parcurge Robert vor ajunge în celula de pe a treia coloană. Astfel, răspunsul este 11.

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