Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const int base = 37;
- ll hashString (string s){
- reverse(s.begin(), s.end());
- ll ret = 0;
- lp(i, 0, s.size()-1)
- ret = ret*base + tolower(s[i]);
- return ret;
- }
- ll hashText( int st , int end ){
- ll ret = 0;
- lp(i, st, end)
- ret = ret * base + tolower(text[i]);
- return ret;
- }
- int main(int argc, const char * argv[]) {
- map <ll , string> st;
- cin>>n>>text>>m;
- vector<string> ans ;
- lp(i,1 , m){
- string temp;
- cin>>temp;
- st[hashString(temp)] = temp;
- }
- int start = 0;
- lp(i, 0, n-1){
- ll h = hashText(start, i);
- map<ll , string> ::iterator it = st.find(h);
- if( it != st.end() ){
- ans.pb(it->s);
- start = i + 1 ;
- }
- }
- for(string x : ans)
- cout<<x<<" ";
- cout<<endl;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement