Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define ll long long
- int main()
- {
- int n;
- string t;
- cin>>n>>t;
- int m = t.size();
- vector<string> s(n);
- for(auto &e: s) cin>>e;
- ll int ans = 0;
- vector<int> prefMatch(n);
- for(int i=0; i<n; i++)
- {
- int x = 0;
- for(auto e: s[i])
- {
- if(x == m) break;
- if(t[x] == e) x++;
- }
- prefMatch[i] = x;
- }
- vector<int> suffMatch(n);
- for(int i=0; i<n; i++)
- {
- int x = 0;
- reverse(s[i].begin(), s[i].end());
- for(auto e: s[i])
- {
- if(x == m) break;
- if(t[m-x-1] == e) x++;
- }
- suffMatch[i] = x;
- }
- sort(suffMatch.begin(), suffMatch.end());
- for(auto e: prefMatch)
- ans += n - (lower_bound(suffMatch.begin(), suffMatch.end(), (m-e)) - suffMatch.begin());
- cout<<ans<<"\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment