#include char *dict[200000], temp[100]; char *out[200000]; int os; int ds; int search(char *w){ int hi, lo, mid, j; hi = ds-1; lo = 0; while (hi >= lo) { mid = lo+(hi-lo)/2; j = strcmp(w,dict[mid]); if (j) { if (j < 0) { hi = mid-1; }else{ lo = mid+1; } }else break; } if (hi >= lo) return 1; return 0; } main(){ int i,j,k,n; while (gets(temp) != NULL) { dict[ds] = (char *) malloc(strlen(temp)+1); strcpy(dict[ds++],temp); } for (i=0;i=0 && strcmp(dict[j],out[k]) < 0;k--) {} if (k < 0 || strcmp(dict[j],out[k])){ for (n=os;n>k;n--) out[n+1] = out[n]; out[k+1] = dict[j]; os++; } } } } for (i=0;i