COCI-15 (2015) - Γύρος #5 - 5 (OOP)

View as PDF

Submit solution

Points: 45 (partial)
Time limit: 2.0s
Memory limit: 512M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
OOP

Ο μικρός Matej λύνει μια εργαστηριακή άσκηση OOP (Object-oriented Programming) και έχει πρόβλημα με την επίλυση ενός υποπροβλήματος.
Του δίνεται ένα σύνολο που περιέχει \(Ν\) λέξεις. Του δίνονται επίσης Q ερωτήματα όπου κάθε ερώτημα είναι ένα μοτίβο. Ένα μοτίβο αποτελείται από έναν μόνο χαρακτήρα "∗" και πεζά γράμματα του αγγλικού αλφαβήτου. Για παράδειγμα, "∗", "kul∗to", "ana∗".
Ένα μοτίβο λέγεται ότι καλύπτει μια λέξη εάν υπάρχει ένας τέτοιος πίνακας γραμμάτων (που μπορεί να είναι κενός) που, όταν αντικαθίσταται ο χαρακτήρας "∗", το μοτίβο και η λέξη γίνονται εντελώς πανομοιότυπα. Είναι απαραίτητο να τυπωθούν πόσες λέξεις καλύπτει κάθε μοτίβο.

Είσοδος

Η πρώτη γραμμή εισόδου περιέχει δύο ακέραιους αριθμούς N και Q\;(1 \leq N,\;Q \leq 100\,000).
Κάθε μία από τις ακόλουθες N γραμμές περιέχει μια λέξη που αποτελείται από πεζά γράμματα του αγγλικού αλφαβήτου.
Κάθε μία από τις ακόλουθες Q γραμμές περιέχει ένα μοτίβο για το οποίο πρέπει να τυπώσετε πόσες λέξεις από το πρώτο σύνολο καλύπτει.
Ο συνολικός αριθμός χαρακτήρων θα είναι μικρότερος από 3\,000\,000.

Έξοδος

Τυπώστε Q γραμμές, η k-οστή γραμμή να περιέχει τον αριθμό των λέξεων που καλύπτει το k-οστό μοτίβο.

Βαθμολογία

Σε περιπτώσεις δοκιμής αξίας 40% των συνολικών πόντων, θα έχει επιπλέον 1 \leq N,\;Q \leq 1000.

Παραδείγματα

input

3 3
aaa
abc
aba
a*a
aaa*
*aaa

output

2
1
1

input

5 3
eedecc
ebdecb
eaba
ebcddc
eb
e*
*dca
e*c

output

5
0
2

Comments

There are no comments at the moment.