#include <iostream>
#include <algorithm>
class StrCmp
{
public:
template <typename T> bool operator()
(const T* p1, const T* p2) const
{
while (*p1 && *p2 && *p1 == *p2)
++p1, ++p2;
return *p2 - *p1 > 0;
}
};
int main(int argc, char* argv[] )
{
const unsigned int* a[]
{
(const unsigned int*)"Сидоров",
(const unsigned int*)"Петров",
(const unsigned int*)"Иванов",
(const unsigned int*)"Аров",
(const unsigned int*)"Аро",
(const unsigned int*)"",
};
std::cout << StrCmp()(a[2],a[5]) << std::endl;
std::cout << StrCmp()(a[5],a[2]) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKY2xhc3MgU3RyQ21wCnsKcHVibGljOgogICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGJvb2wgb3BlcmF0b3IoKQogICAgICAgIChjb25zdCBUKiBwMSwgY29uc3QgVCogcDIpIGNvbnN0CiAgICB7CiAgICAgICAgd2hpbGUgKCpwMSAmJiAqcDIgJiYgKnAxID09ICpwMikKICAgICAgICAgICAgKytwMSwgKytwMjsKCiAgICAgICAgcmV0dXJuICpwMiAtICpwMSA+IDA7CiAgICB9Cn07CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciogYXJndltdICkKewogICAgY29uc3QgdW5zaWduZWQgaW50KiBhW10KICAgIHsKICAgICAgICAoY29uc3QgdW5zaWduZWQgaW50Kiki0KHQuNC00L7RgNC+0LIiLAogICAgICAgIChjb25zdCB1bnNpZ25lZCBpbnQqKSLQn9C10YLRgNC+0LIiLAogICAgICAgIChjb25zdCB1bnNpZ25lZCBpbnQqKSLQmNCy0LDQvdC+0LIiLAogICAgICAgIChjb25zdCB1bnNpZ25lZCBpbnQqKSLQkNGA0L7QsiIsCiAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGludCopItCQ0YDQviIsCiAgICAgICAgKGNvbnN0IHVuc2lnbmVkIGludCopIiIsCiAgICB9OwoKICAgIHN0ZDo6Y291dCA8PCBTdHJDbXAoKShhWzJdLGFbNV0pIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBTdHJDbXAoKShhWzVdLGFbMl0pIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQoK