#include #include #include int main(void) { uint64_t total = 0; uint8_t max = 0; uint8_t prev = 0; int8_t after = -1; while (1) { char c = getchar(); if (c >= '0' && c <= '9') { uint8_t digit = c - '0'; if (digit > max) { prev = max; max = digit; after = -1; } else { if (digit > after) { after = digit; } } } else if (c == '\n' || c == EOF) { if (after == -1) { // special case: max is the last digit total += 10*prev + max; } else { total += 10*max + after; } max = 0; prev = 0; after = -1; if (c == EOF) break; } else { fprintf(stderr, "weird character: %02x\n", c); exit(1); } } printf("%ld\n", total); return 0; }