#include <iostream>
#include <vector>
#include <string>
using namespace std;
bool isSubstr(const std::string & s, size_t start, const std::string & pattern)
{
for (auto i = 0; i < pattern.size(); i++)
{
if (s[start + i] != pattern[i])
{
return false;
}
}
return true;
}
bool isSubstr(const std::string & word, const std::string & pattern)
{
for (auto i = 0; i < word.size() - pattern.size() + 1; i++)
{
if (isSubstr(word, i, pattern))
{
return true;
}
}
return false;
}
int main() {
string word="abc";
vector<string> patterns {"a","abc","bc","d","ef"};
for (auto &pattern : patterns)
std::cout << pattern << " " << isSubstr(word, pattern) << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKYm9vbCBpc1N1YnN0cihjb25zdCBzdGQ6OnN0cmluZyAmIHMsIHNpemVfdCBzdGFydCwgY29uc3Qgc3RkOjpzdHJpbmcgJiBwYXR0ZXJuKQp7CiAgICBmb3IgKGF1dG8gaSA9IDA7IGkgPCBwYXR0ZXJuLnNpemUoKTsgaSsrKQogICAgewogICAgICAgIGlmIChzW3N0YXJ0ICsgaV0gIT0gcGF0dGVybltpXSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gdHJ1ZTsKfQoKYm9vbCBpc1N1YnN0cihjb25zdCBzdGQ6OnN0cmluZyAmIHdvcmQsIGNvbnN0IHN0ZDo6c3RyaW5nICYgcGF0dGVybikKewogICAgZm9yIChhdXRvIGkgPSAwOyBpIDwgd29yZC5zaXplKCkgLSBwYXR0ZXJuLnNpemUoKSArIDE7IGkrKykKICAgIHsgCiAgICAgICAgaWYgKGlzU3Vic3RyKHdvcmQsIGksIHBhdHRlcm4pKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKCXN0cmluZyB3b3JkPSJhYmMiOwoJdmVjdG9yPHN0cmluZz4gcGF0dGVybnMgeyJhIiwiYWJjIiwiYmMiLCJkIiwiZWYifTsKCWZvciAoYXV0byAmcGF0dGVybiA6IHBhdHRlcm5zKQoJCXN0ZDo6Y291dCA8PCBwYXR0ZXJuIDw8ICIgIiA8PCBpc1N1YnN0cih3b3JkLCBwYXR0ZXJuKSA8PCAiXG4iOwoJcmV0dXJuIDA7Cn0=