Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <string>
- #include <map>
- #include <set>
- #include <algorithm>
- using namespace std;
- int main()
- {
- string v,s;
- cin>>v>>s;
- set<char> seen;
- int targetSize = 1;
- for(int i=0;i<s.size();i++)
- {
- seen.insert(s[i]);
- if(seen.size()==v.size())
- {
- seen.clear();
- targetSize++;
- }
- }
- map<char,vector<int>> inds;
- for(int i=0;i<s.size();i++)
- {
- inds[s[i]].push_back(i);
- }
- int n;
- cin>>n;
- for(int i=0;i<n;i++)
- {
- string q;
- cin >> q;
- if(q.size()!=targetSize)
- {
- cout<<"0\n";
- }
- else
- {
- bool missing = false;
- int curInd = -1;
- for(int i=0;i<q.size();i++)
- {
- auto nextIt = upper_bound(inds[q[i]].begin(), inds[q[i]].end(), curInd);
- if(nextIt==inds[q[i]].end())
- {
- missing = true;
- break;
- }
- curInd = *nextIt;
- }
- cout<<missing<<'\n';
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment