#include #include int digits[5][2]; int best1 = 100000, best2 = 10000; void pickNext(int layer, int goal, int alreadyPicked,int* best) { int i = 0; if (layer == 6) { if (abs(alreadyPicked - goal) < abs(*best - goal)) { *best = alreadyPicked; } } else { for (;i < 5; i++) { if (digits[i][1] == 0) { digits[i][1] = 1; pickNext(layer + 1, goal, alreadyPicked * 10 + digits[i][0], best); digits[i][1] = 0; } } } } int main() { int input, i; scanf("%d", &input); if (input < 10000 || input > 99999) { printf("Not a 5-digit number!"); return 0; } else { for (i = 4; i >= 0; i--) { digits[i][0] = input % 10; input /= 10; } pickNext(1, 40000, 0, &best1); pickNext(1, 60000, 0, &best2); printf("%d %d", best1, best2); } return 0; }