#include <iostream>
#include <algorithm>
std:: string pig_it( std:: string str)
{
auto numOfSpaces = std:: count ( str.begin ( ) , str.end ( ) , ' ' ) ;
int wordStart = 0 ;
// возвращаем индекс пробела
int wordEnd = str.find ( " " ) ;
for ( int word = 0 ; word <= numOfSpaces; ++ word)
{
if ( str[ wordStart] == '!' || str[ wordStart] == '?' || str[ wordStart] == '.' || str[ wordStart] == ',' )
{
wordStart = wordStart + 2 ;
if ( ( numOfSpaces - word) == 1 ) { wordEnd = str.size ( ) ; }
else { wordEnd = str.find ( " " , wordStart) ; }
continue ;
}
std:: cout << "Debug: wordEnd = " << wordEnd << std:: endl ;
str.insert ( wordEnd, 1 , str[ wordStart] ) ;
str.insert ( wordEnd + 1 , "ay" ) ;
str.erase ( wordStart, 1 ) ;
wordStart = wordEnd + 3 ;
if ( ( numOfSpaces - word) == 1 ) { wordEnd = str.size ( ) ; }
else { wordEnd = str.find ( " " , wordStart) ; }
}
return str;
}
int main( int argc, char * argv[ ] )
{
std:: cout << pig_it( "Hello" ) ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKc3RkOjpzdHJpbmcgcGlnX2l0KHN0ZDo6c3RyaW5nIHN0cikKewogICAgYXV0byBudW1PZlNwYWNlcyA9IHN0ZDo6Y291bnQoc3RyLmJlZ2luKCksIHN0ci5lbmQoKSwgJyAnKTsKICAgIGludCB3b3JkU3RhcnQgPSAwOwogICAgLy8g0LLQvtC30LLRgNCw0YnQsNC10Lwg0LjQvdC00LXQutGBINC/0YDQvtCx0LXQu9CwCiAgICBpbnQgd29yZEVuZCA9IHN0ci5maW5kKCIgIik7CiAgICBmb3IgKGludCB3b3JkID0gMDsgd29yZCA8PSBudW1PZlNwYWNlczsgKyt3b3JkKQogICAgewogICAgICAgIGlmIChzdHJbd29yZFN0YXJ0XSA9PSAnIScgfHwgc3RyW3dvcmRTdGFydF0gPT0gJz8nIHx8IHN0clt3b3JkU3RhcnRdID09ICcuJyB8fCBzdHJbd29yZFN0YXJ0XSA9PSAnLCcpCiAgICAgICAgewogICAgICAgICAgICB3b3JkU3RhcnQgPSB3b3JkU3RhcnQgKyAyOwogICAgICAgICAgICBpZiAoKG51bU9mU3BhY2VzIC0gd29yZCkgPT0gMSkgeyB3b3JkRW5kID0gc3RyLnNpemUoKTsgfQogICAgICAgICAgICBlbHNlIHsgd29yZEVuZCA9IHN0ci5maW5kKCIgIiwgd29yZFN0YXJ0KTsgfQogICAgICAgICAgICBjb250aW51ZTsKICAgICAgICB9CiAgICAgICAgc3RkOjpjb3V0IDw8ICJEZWJ1Zzogd29yZEVuZCA9ICIgPDwgd29yZEVuZCA8PCBzdGQ6OmVuZGw7CiAgICAgICAgc3RyLmluc2VydCh3b3JkRW5kLCAxLCBzdHJbd29yZFN0YXJ0XSk7CiAgICAgICAgc3RyLmluc2VydCh3b3JkRW5kICsgMSwgImF5Iik7CiAgICAgICAgc3RyLmVyYXNlKHdvcmRTdGFydCwgMSk7CiAgICAgICAgd29yZFN0YXJ0ID0gd29yZEVuZCArIDM7CiAgICAgICAgaWYgKChudW1PZlNwYWNlcyAtIHdvcmQpID09IDEpIHsgd29yZEVuZCA9IHN0ci5zaXplKCk7IH0KICAgICAgICBlbHNlIHsgd29yZEVuZCA9IHN0ci5maW5kKCIgIiwgd29yZFN0YXJ0KTsgfQogICAgfQogICAgcmV0dXJuIHN0cjsKfQoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiBhcmd2W10pCnsKICAgIHN0ZDo6Y291dCA8PCBwaWdfaXQoIkhlbGxvIik7Cn0K