#include <iostream>
#include <string>
#include <utility>
std::string spinWords( const std::string &s, std::string::size_type length = 5 )
{
std::string t( s );
const char *delim = " \t";
for ( std::string::size_type i = 0; i != t.size(); )
{
auto pos = t.find_first_not_of( delim, i );
if ( pos != std::string::npos )
{
i = t.find_first_of( delim, pos );
if ( i == std::string::npos ) i = t.size();
if ( length < i - pos )
{
auto n = i - pos;
for ( std::string::size_type j = 0; j < n / 2; j++ )
{
std::swap( t[pos + j], t[i - j - 1] );
}
}
}
else
{
i = t.size();
}
}
return t;
}
int main()
{
std::string s( "1 12 123 1234 12345 123456 1234567 123456789 1234567890" );
std::cout << s << '\n';
std::cout << spinWords( s ) << '\n';
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8dXRpbGl0eT4KCnN0ZDo6c3RyaW5nIHNwaW5Xb3JkcyggY29uc3Qgc3RkOjpzdHJpbmcgJnMsIHN0ZDo6c3RyaW5nOjpzaXplX3R5cGUgbGVuZ3RoID0gNSApCnsKCXN0ZDo6c3RyaW5nIHQoIHMgKTsKCWNvbnN0IGNoYXIgKmRlbGltID0gIiBcdCI7CgoJZm9yICggc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBpID0gMDsgaSAhPSB0LnNpemUoKTsgICkKCXsKCQlhdXRvIHBvcyA9IHQuZmluZF9maXJzdF9ub3Rfb2YoIGRlbGltLCBpICk7CgkJCgkJaWYgKCBwb3MgIT0gc3RkOjpzdHJpbmc6Om5wb3MgKQoJCXsKCQkJaSA9IHQuZmluZF9maXJzdF9vZiggZGVsaW0sIHBvcyApOwoJCQkKCQkJaWYgKCBpID09IHN0ZDo6c3RyaW5nOjpucG9zICkgaSA9IHQuc2l6ZSgpOwoJCQkKCQkJaWYgKCBsZW5ndGggPCBpIC0gcG9zICkKCQkJewoJCQkJYXV0byBuID0gaSAtIHBvczsKCQkJCQoJCQkJZm9yICggc3RkOjpzdHJpbmc6OnNpemVfdHlwZSBqID0gMDsgaiA8IG4gLyAyOyBqKysgKQoJCQkJewoJCQkJCXN0ZDo6c3dhcCggdFtwb3MgKyBqXSwgdFtpIC0gaiAtIDFdICk7CgkJCQl9CgkJCX0KCQl9CgkJZWxzZQoJCXsKCQkJaSA9IHQuc2l6ZSgpOwoJCX0KCX0KCQoJcmV0dXJuIHQ7Cn0KCmludCBtYWluKCkgCnsKCQoJc3RkOjpzdHJpbmcgcyggIjEgMTIgMTIzIDEyMzQgMTIzNDUgMTIzNDU2IDEyMzQ1NjcgMTIzNDU2Nzg5IDEyMzQ1Njc4OTAiICk7CgkKCXN0ZDo6Y291dCA8PCBzIDw8ICdcbic7CglzdGQ6OmNvdXQgPDwgc3BpbldvcmRzKCBzICkgPDwgJ1xuJzsKCQoJcmV0dXJuIDA7Cn0=