Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- /// from HUNG MINE with love <3
- const long long MOD = 1337377;
- int t[400001][50], n, m, e[400001], cc = 0;
- long long f[300001];
- string s, a;
- int main () {
- if (fopen ("test.inp", "r")) {
- freopen ("test.inp", "r", stdin);
- }
- // else {
- // freopen ("SEPARATE.inp", "r", stdin);
- // freopen ("SEPARATE.out", "w", stdout);
- // }
- ios_base :: sync_with_stdio (0);
- cin.tie (0);
- cout.tie (0);
- cin >> s;
- n = s.size ();
- s = '@' + s;
- cin >> m;
- for (int i = 1; i <= m; ++ i) {
- cin >> a;
- int r = 0;
- for (int j = a.size () - 1; j >= 0; -- j) {
- if (t[r][a[j] - 'a'] == 0) {
- t[r][a[j] - 'a'] = ++ cc;
- }
- r = t[r][a[j] - 'a'];
- }
- e[r] = 1;
- }
- f[0] = 1;
- for (int i = 1; i <= n; ++ i) {
- int r = 0;
- for (int j = i; j >= 1; -- j) {
- if (t[r][s[j] - 'a'] == 0) break;
- r = t[r][s[j] - 'a'];
- if (e[r]) {
- f[i] += f[j - 1];
- f[i] %= MOD;
- }
- }
- }
- cout << f[n];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement