#include <iostream>
#include <cstdint>
void checkRepeatImpl(const char *word, uint64_t *tsar)
{
if (*word) {
tsar[*word++]++;
checkRepeatImpl(word, tsar); // Реку-ку-курсия. Хвостовая!
}
}
bool checkRepeatImpl(const uint64_t *tsar, size_t idx = 0)
{
return (idx < 256) && (tsar[idx] > 1 || checkRepeatImpl(tsar, idx + 1));
}
bool checkRepeat(const char *word)
{
uint64_t tsar[256] = {};
checkRepeatImpl(word, tsar);
return checkRepeatImpl(tsar);
}
int main()
{
std::cout << checkRepeat("") << std::endl // 0
<< checkRepeat("a") << std::endl // 0
<< checkRepeat("aa") << std::endl // 1
<< checkRepeat("abc") << std::endl // 0
<< checkRepeat("aaa") << std::endl // 1
<< checkRepeat("bab") << std::endl // 1
<< checkRepeat("baab") << std::endl // 1
<< checkRepeat("bbaaabb") << std::endl // 1
<< checkRepeat("bbabc") << std::endl // 1
<< checkRepeat("abcbb") << std::endl; // 1
return EXIT_SUCCESS;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0ZGludD4KCnZvaWQgY2hlY2tSZXBlYXRJbXBsKGNvbnN0IGNoYXIgKndvcmQsIHVpbnQ2NF90ICp0c2FyKQp7CiAgICBpZiAoKndvcmQpIHsKICAgICAgICB0c2FyWyp3b3JkKytdKys7CiAgICAgICAgY2hlY2tSZXBlYXRJbXBsKHdvcmQsIHRzYXIpOyAgLy8g0KDQtdC60YMt0LrRgy3QutGD0YDRgdC40Y8uINCl0LLQvtGB0YLQvtCy0LDRjyEKICAgIH0KfQoKYm9vbCBjaGVja1JlcGVhdEltcGwoY29uc3QgdWludDY0X3QgKnRzYXIsIHNpemVfdCBpZHggPSAwKQp7CiAgICByZXR1cm4gKGlkeCA8IDI1NikgJiYgKHRzYXJbaWR4XSA+IDEgfHwgY2hlY2tSZXBlYXRJbXBsKHRzYXIsIGlkeCArIDEpKTsKfQoKYm9vbCBjaGVja1JlcGVhdChjb25zdCBjaGFyICp3b3JkKQp7CiAgICB1aW50NjRfdCB0c2FyWzI1Nl0gPSB7fTsKICAgIGNoZWNrUmVwZWF0SW1wbCh3b3JkLCB0c2FyKTsKICAgIHJldHVybiBjaGVja1JlcGVhdEltcGwodHNhcik7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IGNoZWNrUmVwZWF0KCIiKSA8PCBzdGQ6OmVuZGwgICAgICAvLyAwCiAgICAgICAgPDwgY2hlY2tSZXBlYXQoImEiKSA8PCBzdGQ6OmVuZGwgICAgICAgICAgIC8vIDAKICAgICAgICA8PCBjaGVja1JlcGVhdCgiYWEiKSA8PCBzdGQ6OmVuZGwgICAgICAgICAgLy8gMQogICAgICAgIDw8IGNoZWNrUmVwZWF0KCJhYmMiKSA8PCBzdGQ6OmVuZGwgICAgICAgICAvLyAwCiAgICAgICAgPDwgY2hlY2tSZXBlYXQoImFhYSIpIDw8IHN0ZDo6ZW5kbCAgICAgICAgIC8vIDEKICAgICAgICA8PCBjaGVja1JlcGVhdCgiYmFiIikgPDwgc3RkOjplbmRsICAgICAgICAgLy8gMQogICAgICAgIDw8IGNoZWNrUmVwZWF0KCJiYWFiIikgPDwgc3RkOjplbmRsICAgICAgICAvLyAxCiAgICAgICAgPDwgY2hlY2tSZXBlYXQoImJiYWFhYmIiKSA8PCBzdGQ6OmVuZGwgICAgIC8vIDEKICAgICAgICA8PCBjaGVja1JlcGVhdCgiYmJhYmMiKSA8PCBzdGQ6OmVuZGwgICAgICAgLy8gMQogICAgICAgIDw8IGNoZWNrUmVwZWF0KCJhYmNiYiIpIDw8IHN0ZDo6ZW5kbDsgICAgICAvLyAxCgogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQo=