Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- const int N = 1e6 + 7;
- int trie[N][26], cnt[N][26], trien = 1;
- int add(int u, char c) {
- c -= 'a';
- cnt[u][c]++;
- if(trie[u][c]) {
- return trie[u][c];
- }
- return trie[u][c] = ++trien;
- }
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(0);
- unordered_map<string, int> mp;
- int n;
- cin >> n;
- while(n--) {
- string s;
- cin >> s;
- if(mp.count(s)) {
- continue;
- }
- mp[s]++;
- int u = 1;
- for(auto c : s) {
- u = add(u, c);
- }
- }
- int q;
- cin >> q;
- while(q--) {
- string s;
- cin >> s;
- int u = 1;
- for(int i = 0; i < (int)s.size() - 1; i++) {
- u = trie[u][s[i] - 'a'];
- }
- cout << cnt[u][s.back() - 'a'] << "\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement