ratina

Time limit: 0.2s
Memory limit: 32MB
Input: ratina.in
Output: ratina.out

Limba ratină are doar N cuvinte, numerotate de la 1 la N. Două sau mai multe cuvinte se numesc k-asemenea dacă au primele k litere identice.

Gradul de asemănare între t cuvinte este k dacă cele t cuvinte sunt k-asemenea, dar nu sunt (k+1)asemenea.

Cerinţă

Scrieţi un program care pentru un set de t cuvinte dat, răspunde la interogări de genul: "Care este gradul de asemănare între cuvintele x1x2...xtx_1 x_2 ... x_t" ?

Date de intrare

Fişierul de intrare ratina.in va conţine pe prima linie două numere naturale N M, separate printr-un spaţiu, reprezentând numărul de cuvinte din limba ratină, respectiv numărul de interogări.
Următoarele N linii vor conţine cuvintele din limba ratină, câte un cuvânt pe o linie. Mai exact, pe linia i+1 este scris cuvântul cu numărul de ordine i. Cuvintele sunt formate din litere mici din alfabetul englez.
Urmează M linii, fiecare linie reprezentând câte o interogare exprimată astfel: primul număr de pe linie este un număr natural t reprezentând numărul de cuvinte din interogare, apoi vor urma cele t numere de ordine ale cuvintelor din interogare, separate prin câte un spaţiu.

Date de ieşire

Fişierul de ieşire ratina.out va conţine M linii, câte una pentru fiecare interogare din fişierul de intrare. Pe linia i va fi scris gradul de asemănare al cuvintelor din interogarea i.

Restricţii şi precizări

  • 1 ≤ N ≤ 10 000
  • 1 ≤ lungimea maximă a unui cuvânt ≤ 2000
  • 1 ≤ suma lungimilor tuturor cuvintelor ≤ 200 000
  • 1 ≤ M ≤ 100 000
  • 1 ≤ t ≤ 10 pentru fiecare interogare
  • Pentru 30 de puncte: 1 ≤ N ≤ 200, 1 ≤ lungimea maximă a unui cuvânt ≤ 100, 1 ≤ M ≤ 10 000
  • Pentru alte 20 de puncte: 1 ≤ N ≤ 200, 1 ≤ lungimea maximă a unui cuvânt ≤ 500, 1 ≤ M ≤ 100 000
  • Testele sunt altele decât cele din concurs

Exemplu

ratina.in

6 5
asdf
asdeffff
gata
gara
pesistem
pestesistem
2 1 2
2 3 4
2 5 6
3 1 3 5
2 1 1

ratina.out

3
2
3
0
4

Explicaţie

Prima interogare cere gradul de asemănare între cuvintele asdf şi asdeffff, care este 3 (deoarece cele două cuvinte au primele 3 litere identice, dar nu şi primele 4 litere).
Cea de a doua interogare cere gradul de asemănare între cuvintele gata şi gara, care este 2.
Cea de a treia interogare cere gradul de asemănare între cuvintele pesistem şi pestesistem care este 3.
Cea de a patra interogare cere gradul de asemănare între cuvintele asdf, gata şi pesistem care este 0.
Ultima interogare este evidentă: un cuvânt este k-asemenea cu el însuşi unde k este chiar lungimea cuvântului.

Problem info

ID: 90

Editor: liviu

Author:

Source: ONI 2006 XI-XII: Ziua 2, Problema 1

Tags:

ONI 2006 XI-XII

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