#include <stdio.h> #include <string.h> struct Number { char str[1010]; int l; }; int main() { void sort (struct Number a[],int n); struct Number a[110]; int n,i; while (scanf ("%d",&n)!=EOF) { getchar(); for (i=0;i<n;i++) { gets(a[i].str); a[i].l=strlen(a[i].str); a[i].str[a[i].l]='\0'; } sort(a,n); for (i=0;i<n;i++) puts(a[i].str); } return 0; } void sort (struct Number a[],int n) { int i,j; struct Number t; for (i=0;i<n-1;i++) for (j=0;j<n-1-i;j++) { if (a[j].l>a[j+1].l) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } if (a[j].l==a[j+1].l) { if (strcmp(a[j].str,a[j+1].str)>0) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } } } /************************************************************** Problem: 2202 User: admin Language: C Result: Accepted Time:22 ms Memory:1148 kb ****************************************************************/