#include <iostream>
//в среднем O(2*n) в худшем O(n*m)
const char* s_find(const char* s1, const char* s2){
const char* a, *b, *p = NULL;
while(*s1){
a = s1;
b = s2;
while(*b && (*b == *a)){
++a;
++b;
}
if(! *b){
p = s1;
break;
}
++s1;
}
return p;
}
int main(void) {
char s[] = "приключение ёжика в лесу.";
const char* p = s_find(s, "ёжик");
if(p != NULL)
std::cout << p << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKLy/QsiDRgdGA0LXQtNC90LXQvCBPKDIqbikg0LIg0YXRg9C00YjQtdC8IE8obiptKQpjb25zdCBjaGFyKiBzX2ZpbmQoY29uc3QgY2hhciogczEsIGNvbnN0IGNoYXIqIHMyKXsKCWNvbnN0IGNoYXIqIGEsICpiLCAqcCA9IE5VTEw7Cgl3aGlsZSgqczEpewoJCWEgPSBzMTsKCQliID0gczI7CgkJd2hpbGUoKmIgJiYgKCpiID09ICphKSl7CgkJCSsrYTsKCQkJKytiOwoJCX0KCgkJaWYoISAqYil7CgkJCXAgPSBzMTsKCQkJYnJlYWs7CgkJfQoJCSsrczE7Cgl9CglyZXR1cm4gcDsKfQoKaW50IG1haW4odm9pZCkgewoJY2hhciBzW10gPSAi0L/RgNC40LrQu9GO0YfQtdC90LjQtSDRkdC20LjQutCwINCyINC70LXRgdGDLiI7CgoJY29uc3QgY2hhciogcCA9IHNfZmluZChzLCAi0ZHQttC40LoiKTsKCWlmKHAgIT0gTlVMTCkKCQlzdGQ6OmNvdXQgPDwgcCA8PCBzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==