Ankit_132

E

Oct 14th, 2023
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.07 KB | None | 0 0
  1.  
  2. #include <bits/stdc++.h>
  3.  
  4. using namespace std;
  5.  
  6. #define ll     long long
  7.  
  8. int main()
  9. {
  10.     int n;
  11.     string t;
  12.    
  13.     cin>>n>>t;
  14.    
  15.     int m = t.size();
  16.    
  17.     vector<string> s(n);
  18.    
  19.     for(auto &e: s)   cin>>e;
  20.    
  21.     ll int ans = 0;
  22.    
  23.     vector<int> prefMatch(n);
  24.    
  25.     for(int i=0; i<n; i++)
  26.     {
  27.         int x = 0;
  28.        
  29.         for(auto e: s[i])
  30.         {
  31.             if(x == m)      break;
  32.             if(t[x] == e)   x++;
  33.         }
  34.        
  35.         prefMatch[i] = x;
  36.     }
  37.    
  38.     vector<int> suffMatch(n);
  39.    
  40.     for(int i=0; i<n; i++)
  41.     {
  42.         int x = 0;
  43.        
  44.         reverse(s[i].begin(), s[i].end());
  45.        
  46.         for(auto e: s[i])
  47.         {
  48.             if(x == m)          break;
  49.             if(t[m-x-1] == e)   x++;
  50.         }
  51.        
  52.         suffMatch[i] = x;
  53.     }
  54.    
  55.     sort(suffMatch.begin(), suffMatch.end());
  56.    
  57.     for(auto e: prefMatch)
  58.         ans += n - (lower_bound(suffMatch.begin(), suffMatch.end(), (m-e)) - suffMatch.begin());
  59.    
  60.     cout<<ans<<"\n";
  61. }
  62.  
Advertisement
Add Comment
Please, Sign In to add comment