document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int SIZE = 1000001;
  4. string s[SIZE];
  5. int pre[SIZE],suf[SIZE];
  6. int main(){
  7.     ios_base::sync_with_stdio(false);
  8.     int n;
  9.     cin>>n;
  10.     for(int i=1;i<=n;i++)cin>>s[i];
  11.     string T;
  12.     cin>>T;
  13.     for(int i=1;i<=n;i++){
  14.         if(s[i].size()>T.size())continue;
  15.         for(int j=0;j<s[i].size();j++){
  16.             if(s[i][j]!=T[j])break;
  17.             if(j+1==s[i].size())pre[j]=i;
  18.         }
  19.         for(int j=0;j<s[i].size();j++){
  20.             if(s[i][j]!=T[T.size()-s[i].size()+j])break;
  21.             if(j+1==s[i].size())suf[T.size()-s[i].size()]=i;
  22.         }
  23.     }
  24.     vector<pair<int,int> >an;
  25.     for(int i=1;i<T.size();i++){
  26.         if(pre[i-1]&&suf[i]&&pre[i-1]!=suf[i]){
  27.             an.push_back(make_pair(pre[i-1],suf[i]));
  28.             if(an.back().first>an.back().second)
  29.                 swap(an.back().first,an.back().second);
  30.         }
  31.     }
  32.     sort(an.begin(),an.end());
  33.     an.resize(unique(an.begin(),an.end())-an.begin());
  34.     printf("%d\\n",(int)an.size());
  35.     for(int i=0;i<an.size();i++)printf("%d %d\\n",an[i].first,an[i].second);
  36. }
');