#include <ctype.h>
#include <stdbool.h>
#include <stdio.h>
#include <string.h>
bool is_identifier(const char *word) {
if (!((word[0] >= 'a' && word[0] <= 'z') ||
(word[0] >= 'A' && word[0] <= 'Z') || word[0] == '_')) {
return 0;
}
for (int i
= 1; i
< strlen(word
); i
++) { if (!((word[i] >= 'a' && word[i] <= 'z') ||
(word[i] >= 'A' && word[i] <= 'Z') ||
(word[i] >= '0' && word[i] <= '9') || word[i] == '_')) {
return 0;
}
}
return 1;
}
void reverse_non_identifiers(char *line) {
char *start = line, *end;
while (*start != '\0') {
while (*start == ' ') {
start++;
}
end = start;
while (*end != ' ' && *end != '\0') {
end++;
}
if (!is_identifier(start)) {
int len = end - start;
for (int i = 0; i < len / 2; i++) {
char temp = start[i];
start[i] = start[len - i - 1];
start[len - i - 1] = temp;
}
}
start = end;
}
}
int main() {
char line[10000000];
while (fgets(line
, sizeof(line
), stdin
)) { char *newline
= strtok(line
, "\n"); reverse_non_identifiers(copy);
}
return 0;
}
I2luY2x1ZGUgPGN0eXBlLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxzdGRpby5oPgojaW5jbHVkZSA8c3RyaW5nLmg+Cgpib29sIGlzX2lkZW50aWZpZXIoY29uc3QgY2hhciAqd29yZCkgewogIGlmICghKCh3b3JkWzBdID49ICdhJyAmJiB3b3JkWzBdIDw9ICd6JykgfHwKICAgICAgICAod29yZFswXSA+PSAnQScgJiYgd29yZFswXSA8PSAnWicpIHx8IHdvcmRbMF0gPT0gJ18nKSkgewogICAgcmV0dXJuIDA7CiAgfQogIGZvciAoaW50IGkgPSAxOyBpIDwgc3RybGVuKHdvcmQpOyBpKyspIHsKICAgIGlmICghKCh3b3JkW2ldID49ICdhJyAmJiB3b3JkW2ldIDw9ICd6JykgfHwKICAgICAgICAgICh3b3JkW2ldID49ICdBJyAmJiB3b3JkW2ldIDw9ICdaJykgfHwKICAgICAgICAgICh3b3JkW2ldID49ICcwJyAmJiB3b3JkW2ldIDw9ICc5JykgfHwgd29yZFtpXSA9PSAnXycpKSB7CiAgICAgIHJldHVybiAwOwogICAgfQogIH0KICByZXR1cm4gMTsKfQoKdm9pZCByZXZlcnNlX25vbl9pZGVudGlmaWVycyhjaGFyICpsaW5lKSB7CiAgY2hhciAqc3RhcnQgPSBsaW5lLCAqZW5kOwogIHdoaWxlICgqc3RhcnQgIT0gJ1wwJykgewogICAgd2hpbGUgKCpzdGFydCA9PSAnICcpIHsKICAgICAgc3RhcnQrKzsKICAgIH0KICAgIGVuZCA9IHN0YXJ0OwogICAgd2hpbGUgKCplbmQgIT0gJyAnICYmICplbmQgIT0gJ1wwJykgewogICAgICBlbmQrKzsKICAgIH0KICAgIGlmICghaXNfaWRlbnRpZmllcihzdGFydCkpIHsKICAgICAgaW50IGxlbiA9IGVuZCAtIHN0YXJ0OwogICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbiAvIDI7IGkrKykgewogICAgICAgIGNoYXIgdGVtcCA9IHN0YXJ0W2ldOwogICAgICAgIHN0YXJ0W2ldID0gc3RhcnRbbGVuIC0gaSAtIDFdOwogICAgICAgIHN0YXJ0W2xlbiAtIGkgLSAxXSA9IHRlbXA7CiAgICAgIH0KICAgIH0KICAgIHN0YXJ0ID0gZW5kOwogIH0KfQoKaW50IG1haW4oKSB7CiAgY2hhciBsaW5lWzEwMDAwMDAwXTsKICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBzdGRpbikpIHsKICAgIGNoYXIgKm5ld2xpbmUgPSBzdHJ0b2sobGluZSwgIlxuIik7CiAgICBpbnQgbGVuID0gc3RybGVuKG5ld2xpbmUpOwogICAgY2hhciAqY29weSA9IG1hbGxvYyhsZW4gKyAxKTsKICAgIHN0cmNweShjb3B5LCBuZXdsaW5lKTsKICAgIHJldmVyc2Vfbm9uX2lkZW50aWZpZXJzKGNvcHkpOwogICAgcHV0cyhjb3B5KTsKICAgIGZyZWUoY29weSk7CiAgfQogIHJldHVybiAwOwp9Cg==