#include #include using namespace std; char sir[1010], minim[1010], maxim[1010], *p; int compara(char sir1[], char sir2[]) { if(strcmp(sir1, sir2) == 0) return 0; if(strlen(sir1) < strlen(sir2)) return -1; if(strlen(sir1) > strlen(sir2)) return 1; return strcmp(sir1, sir2); } string suma(char sir1[], char sir2[]) { int carry = 0, sum, i; string min(sir1), max(sir2), result = ""; for (i = min.length() - 1; i >= 0; i--) { sum = min[i] + max[i + max.length() - min.length()] + carry - 2*'0'; carry = sum/10; sum %=10; result = (char)(sum + '0') + result; } i = max.length() - min.length() - 1; while (i>=0) { sum = max[i] + carry - '0'; carry = sum/10; sum %= 10; result = (char)(sum + '0') + result; i--; } if (carry!=0) result = (char)(carry + '0') + result; return result; } int main() { int length, i, first = 1; fstream f("cod.in", ios::in), g("cod.out", ios::out); while(!f.eof()) { f.getline(sir, 1001); length = strlen(sir); for(i = 0; i < length; i++) if(sir[i] < '0' || sir[i] > '9') sir[i] = ' '; p = strtok(sir, " "); while(p) { if(first) { strcpy(minim, p); first = 0; } for(i = 0; i < strlen(p); i++) if(p[i] == '0') strcpy(p, p + i + 1); else break; if(strlen(p) == 0) { p = strtok(NULL, " "); continue; } if(compara(p, minim) < 0) strcpy(minim, p); if(compara(p, maxim) > 0) strcpy(maxim, p); p = strtok(NULL, " "); } } g << minim << endl << maxim << endl; g << suma(minim, maxim); return 0; }