#include #include /* podretazec */ int je_podretazec(char *ret, char *podret) { int dlzka_ret; int dlzka_podret; int n, poc; int i, j; dlzka_ret = strlen(ret); dlzka_podret = strlen(podret); poc = dlzka_ret - dlzka_podret; for (i = 0; i <= poc; i++) { n = 0; for (j = 0; j < dlzka_podret; j++) { if (ret[i+j] == podret[j]) n++; else break; } if (n == dlzka_podret) return 1; } return 0; } /* podretazec */ char *podretazec(char *ret, int zac, int kon) { int i; char podret[kon-zac+2]; for (i = zac; i <= kon; i++) { podret[i-zac] = ret[i]; } podret[kon-zac+1] = '\0'; return podret; } /* main */ int main() { int i, j, k, n, poc; char pole[4000][200]; int min_dlzka = 200; char slovo[200]; char podslovo[200]; char vysledok[200]; int pom, pom2; while (1) { pom = 0; pom2 = 0; min_dlzka = 200; /* nacitanie vstupu */ scanf("%d", &n); if (n == 0) break; for (i = 0; i < n; i++) { scanf("%s", pole[i]); if (strlen(pole[i]) < min_dlzka) { min_dlzka = strlen(pole[i]); strcpy(slovo, pole[i]); slovo[strlen(pole[i])] = '\0'; } } /* riesenie */ j = 0; for (i = min_dlzka; i >= 1; i--) { for (j = 0; j <= (min_dlzka - i); j++) { strcpy(podslovo, podretazec(slovo, j, j+i-1)); podslovo[i] = '\0'; /* printf("----\n%s\n", podretazec(slovo, j, j+i-1)); printf("%s\n", podslovo); */ poc = 0; for (k = 0; k < n; k++) { if (je_podretazec(pole[k], podslovo) == 1) poc++; else break; } if (n == poc) { /* printf("-----\n%s\n-----\n", podslovo);*/ pom = 1; if (pom2 == 0) { strcpy(vysledok, podslovo); pom2 = 1; } else { if (strcmp(podslovo, vysledok) < 0) strcpy(vysledok, podslovo); } } } if (pom == 1) { printf("%s\n", vysledok); break; } } if (pom == 0) printf("IDENTITY LOST\n"); } /* vypis for (i = 0; i < n; i++) printf("%s\n", pole[i]); printf("%s\n", slovo); printf("%d\n", min_dlzka); */ return 0; }