#include <iostream>
#include <set>
bool find_in_string( int pos, std::string s, std::string str)
{
std::string str_s = str.substr( pos, s.length());
int s_pos = 0;
while( !s.empty())
{
std::size_t found = str_s.find( s[0]);
if ( found!=std::string::npos)
{
s.erase( 0, 1);
str_s.erase( found, 1);
} else {
return 0;
}
}
return 1;
}
bool find_in_string( std::string s, std::string str)
{
bool found = false;
int pos = 0;
while( !found && pos < str.length() - s.length() + 1)
{
found = find_in_string( pos++, s, str);
}
return found;
}
int main() {
std::string s1 = "abcdpqrs";
std::string s2 = "adcbpqrs";
std::string searched = "dcb";
std::string searched2 = "pdq";
std::string searched3 = "bcpq";
std::cout << find_in_string( searched, s1);
std::cout << find_in_string( searched, s2);
std::cout << find_in_string( searched2, s1);
std::cout << find_in_string( searched3, s1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c2V0PgoKCmJvb2wgZmluZF9pbl9zdHJpbmcoIGludCBwb3MsIHN0ZDo6c3RyaW5nIHMsIHN0ZDo6c3RyaW5nIHN0cikKewoJc3RkOjpzdHJpbmcgc3RyX3MgPSBzdHIuc3Vic3RyKCBwb3MsIHMubGVuZ3RoKCkpOwoJaW50IHNfcG9zID0gMDsKCQoJd2hpbGUoICFzLmVtcHR5KCkpCgl7CgkJc3RkOjpzaXplX3QgZm91bmQgPSBzdHJfcy5maW5kKCBzWzBdKTsKICAgICAgICBpZiAoIGZvdW5kIT1zdGQ6OnN0cmluZzo6bnBvcykKICAgICAgICB7CiAgICAgICAgCXMuZXJhc2UoIDAsIDEpOwogICAgICAgIAlzdHJfcy5lcmFzZSggZm91bmQsIDEpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgCXJldHVybiAwOwogICAgICAgIH0KICAgIAoJfQoKCXJldHVybiAxOwp9Cgpib29sIGZpbmRfaW5fc3RyaW5nKCBzdGQ6OnN0cmluZyBzLCBzdGQ6OnN0cmluZyBzdHIpCnsKCWJvb2wgZm91bmQgPSBmYWxzZTsKCWludCBwb3MgPSAwOwoJCgl3aGlsZSggIWZvdW5kICYmIHBvcyA8IHN0ci5sZW5ndGgoKSAtIHMubGVuZ3RoKCkgKyAxKQoJewoJCWZvdW5kID0gZmluZF9pbl9zdHJpbmcoIHBvcysrLCBzLCBzdHIpOwoJfQoJCglyZXR1cm4gZm91bmQ7Cn0KCmludCBtYWluKCkgewoKCXN0ZDo6c3RyaW5nIHMxID0gImFiY2RwcXJzIjsKCXN0ZDo6c3RyaW5nIHMyID0gImFkY2JwcXJzIjsKCXN0ZDo6c3RyaW5nIHNlYXJjaGVkID0gImRjYiI7CglzdGQ6OnN0cmluZyBzZWFyY2hlZDIgPSAicGRxIjsKCXN0ZDo6c3RyaW5nIHNlYXJjaGVkMyA9ICJiY3BxIjsKCXN0ZDo6Y291dCA8PCBmaW5kX2luX3N0cmluZyggc2VhcmNoZWQsIHMxKTsKICAgIHN0ZDo6Y291dCA8PCBmaW5kX2luX3N0cmluZyggc2VhcmNoZWQsIHMyKTsKICAgIHN0ZDo6Y291dCA8PCBmaW5kX2luX3N0cmluZyggc2VhcmNoZWQyLCBzMSk7CiAgICBzdGQ6OmNvdXQgPDwgZmluZF9pbl9zdHJpbmcoIHNlYXJjaGVkMywgczEpOwogICAgCglyZXR1cm4gMDsKfQ==