#include <stdio.h>
#include <string.h>
int main(int argc, char **argv)
{
// 3 bufferakia
char input[1024];
char output[1024];
char buf[128];
// arketoi ponters poy deixnoyn to telos twn parapanw, efoson doyleyoyme anapoda
const char *firstInput, *lastInput;
char *curBuf, *lastBuf;
char *curOutput;
//input
//assignments
firstInput = input;
lastInput
= strlen(input
) - 1u
+ input
; lastBuf = buf + sizeof(buf);
curBuf = lastBuf;
curOutput = output;
for(;; lastInput--)
{
//pame to input apo to telos pros thn arxh gia na kanoyme reverse se olo to string
// pame kai to bufferaki apo to telos pros thn arxh gia na kanoyme reverse thn leksh
//reveres(x) + reverse(x) = x
*--curBuf = *lastInput;
//an exei hdh graftei mia leksh
if( firstInput == lastInput || *lastInput == ' ')
{
//grapse sto pOutput thn leksh
//vevaia efoson thn grafame anapoda sto pBuf, tote to pBuf mas deixnei thn arxh
//ara pame kanonika, apo thn arxh pros to telos
for(;curBuf != lastBuf ;curBuf++)
{
if(*curBuf == ' ')
continue;//skip space
*curOutput++ = *curBuf;
}
//vazoume kai enan keno
*curOutput++ = ' ';
//an einai h prwth leksh tote telos
if(firstInput == lastInput)
{
//vevaia allazoyme to keno se \0
*curOutput = 0;
break;
}
}
}
return 0;
}
CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+CgoKCmludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKewogICAgLy8gMyBidWZmZXJha2lhCgljaGFyIGlucHV0WzEwMjRdOwoJY2hhciBvdXRwdXRbMTAyNF07CgljaGFyIGJ1ZlsxMjhdOwoKCS8vIGFya2V0b2kgcG9udGVycyBwb3kgZGVpeG5veW4gdG8gdGVsb3MgdHduIHBhcmFwYW53LCBlZm9zb24gZG95bGV5b3ltZSBhbmFwb2RhCgljb25zdCBjaGFyICpmaXJzdElucHV0LCAqbGFzdElucHV0OwoJY2hhciAqY3VyQnVmLCAqbGFzdEJ1ZjsKCWNoYXIgKmN1ck91dHB1dDsKCgkvL2lucHV0CglnZXRzKGlucHV0KTsKCgkvL2Fzc2lnbm1lbnRzCglmaXJzdElucHV0CT0gaW5wdXQ7CglsYXN0SW5wdXQJPSBzdHJsZW4oaW5wdXQpIC0gMXUgKyBpbnB1dDsKCWxhc3RCdWYJCT0gYnVmICsgc2l6ZW9mKGJ1Zik7CgljdXJCdWYJCT0gbGFzdEJ1ZjsKCWN1ck91dHB1dAk9IG91dHB1dDsKCQoJZm9yKDs7IGxhc3RJbnB1dC0tKQoJewoJCS8vcGFtZSB0byBpbnB1dCBhcG8gdG8gdGVsb3MgcHJvcyB0aG4gYXJ4aCBnaWEgbmEga2Fub3ltZSByZXZlcnNlIHNlIG9sbyB0byBzdHJpbmcKCQkvLyBwYW1lIGthaSB0byBidWZmZXJha2kgYXBvIHRvIHRlbG9zIHByb3MgdGhuIGFyeGggZ2lhIG5hIGthbm95bWUgcmV2ZXJzZSB0aG4gbGVrc2gKCQkvL3JldmVyZXMoeCkgKyByZXZlcnNlKHgpID0geAoJCSotLWN1ckJ1ZiA9ICpsYXN0SW5wdXQ7CgoJCS8vYW4gZXhlaSBoZGggZ3JhZnRlaSBtaWEgbGVrc2gKCQlpZiggZmlyc3RJbnB1dCA9PSBsYXN0SW5wdXQgfHwgKmxhc3RJbnB1dCA9PSAnICcpCgkJewoJCQkvL2dyYXBzZSBzdG8gcE91dHB1dCB0aG4gbGVrc2gKCQkJLy92ZXZhaWEgZWZvc29uIHRobiBncmFmYW1lIGFuYXBvZGEgc3RvIHBCdWYsIHRvdGUgdG8gcEJ1ZiBtYXMgZGVpeG5laSB0aG4gYXJ4aAoJCQkvL2FyYSBwYW1lIGthbm9uaWthLCBhcG8gdGhuIGFyeGggcHJvcyB0byB0ZWxvcwoJCQlmb3IoO2N1ckJ1ZiAhPSBsYXN0QnVmIDtjdXJCdWYrKykKCQkJewoJCQkJaWYoKmN1ckJ1ZiA9PSAnICcpCgkJCQkJY29udGludWU7Ly9za2lwIHNwYWNlCgkJCQkqY3VyT3V0cHV0KysgPSAqY3VyQnVmOwoJCQl9CgkJCS8vdmF6b3VtZSBrYWkgZW5hbiBrZW5vCgkJCSpjdXJPdXRwdXQrKyA9ICcgJzsKCgkJCS8vYW4gZWluYWkgaCBwcnd0aCBsZWtzaCB0b3RlIHRlbG9zCgkJCWlmKGZpcnN0SW5wdXQgPT0gbGFzdElucHV0KQoJCQl7CgkJCQkvL3ZldmFpYSBhbGxhem95bWUgdG8ga2VubyBzZSBcMAoJCQkJKmN1ck91dHB1dCA9IDA7CgkJCQlicmVhazsKCQkJfQoJCX0KCQkKCX0KCglwdXRzKG91dHB1dCk7CgkKCXJldHVybiAwOwp9