matbensch

SMSSolution

Mar 21st, 2022
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <map>
  5. #include <set>
  6. #include <algorithm>
  7.  
  8. using namespace std;
  9.  
  10. int main()
  11. {
  12.     string v,s;
  13.     cin>>v>>s;
  14.  
  15.     set<char> seen;
  16.     int targetSize = 1;
  17.     for(int i=0;i<s.size();i++)
  18.     {
  19.         seen.insert(s[i]);
  20.         if(seen.size()==v.size())
  21.         {
  22.             seen.clear();
  23.             targetSize++;
  24.         }
  25.     }
  26.     map<char,vector<int>> inds;
  27.     for(int i=0;i<s.size();i++)
  28.     {
  29.         inds[s[i]].push_back(i);
  30.     }
  31.  
  32.     int n;
  33.     cin>>n;
  34.  
  35.     for(int i=0;i<n;i++)
  36.     {
  37.         string q;
  38.         cin >> q;
  39.  
  40.         if(q.size()!=targetSize)
  41.         {
  42.             cout<<"0\n";
  43.         }
  44.         else
  45.         {
  46.             bool missing = false;
  47.             int curInd = -1;
  48.             for(int i=0;i<q.size();i++)
  49.             {
  50.                 auto nextIt = upper_bound(inds[q[i]].begin(), inds[q[i]].end(), curInd);
  51.                 if(nextIt==inds[q[i]].end())
  52.                 {
  53.                     missing = true;
  54.                     break;
  55.                 }
  56.  
  57.                 curInd = *nextIt;
  58.             }
  59.  
  60.             cout<<missing<<'\n';
  61.  
  62.         }
  63.  
  64.     }
  65.  
  66. }
Advertisement
Add Comment
Please, Sign In to add comment