#include <stdio.h> #include <stdlib.h> #include <string.h> #define max 30000 #define row 1001 #define col 1001 int str_cmp(char* s1, char* s2) { int i; for (i = 0; i < strlen(s1) && i < strlen(s2); i++) { if (s1[i] < s2[i]) { return -1; } else if (s1[i] > s2[i]) { return 1; } } if (strlen(s1) == strlen(s2)) { return 0; } else if (strlen(s1) > strlen(s2)) { return 1; } else { return -1; } } int main() { char s[row][col]; int i = 0, j = 0, k; int m = 0, n = 0; scanf("%d", &n); while (scanf("%s", s[i]) != EOF) { i++; } m = i; for ( i = 0; i < m; i++) { for (j = i + 1, n = i; j < m; j++) { if (str_cmp(s[j], s[n]) < 0) { n = j; } } if (n != i) { strcpy(s[m], s[i]); strcpy(s[i], s[n]); strcpy(s[n], s[m]); } } for (i = 0; i < m; i++) { puts(s[i]); } /* for (i = 0; i < m; i++) { if (s[i][0] == 0) { continue; } k = 0; for (j = 0, n = i; j < m; j++) { if (s[j][0] == 0) { continue; } if (str_cmp(s[j], s[n]) < 0) { n = j; k = 1; } } if (k != 0) { puts(s[n]); s[n][0] = 0; i = -1; } else { puts(s[i]); s[i][0] = 0; } } */ return 0; }