#define MAX 1000
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int compare(const void *a,const void *b)
{
return strcmp(*(char **)a
,*(char **)b
); }
int main()
{
char *ch,**suff;
int count=0,i,j=0,maxlen=0;
ch
= (char *)malloc(sizeof(char)*MAX
); suff
= (char **)malloc(sizeof(char *)*MAX
); char *temp = ch;
while(*temp++)
count++;
for(i=0;i<count;i++)
{
suff[i] = ch+i;
}
qsort(suff
,count
,sizeof(char *),compare
); for(i=0;i<count-1;i++)
{
j=0;
while(*(suff[i]+j) && *(suff[i+1]+j) && *(suff[i]+j)==*(suff[i+1]+j))
j++;
if(j>maxlen)maxlen =j;
}
printf("maxlen is %d\n",maxlen
); return 0;
}
I2RlZmluZSBNQVggMTAwMAojaW5jbHVkZTxzdGRpby5oPgojaW5jbHVkZTxzdGRsaWIuaD4KI2luY2x1ZGU8c3RyaW5nLmg+CmludCBjb21wYXJlKGNvbnN0IHZvaWQgKmEsY29uc3QgIHZvaWQgICpiKQp7CglyZXR1cm4gc3RyY21wKCooY2hhciAqKilhLCooY2hhciAqKiliKTsKfQoKaW50IG1haW4oKQp7CgljaGFyICpjaCwqKnN1ZmY7CglpbnQgY291bnQ9MCxpLGo9MCxtYXhsZW49MDsKCWNoID0gKGNoYXIgKiltYWxsb2Moc2l6ZW9mKGNoYXIpKk1BWCk7CglzdWZmID0gKGNoYXIgKiopbWFsbG9jKHNpemVvZihjaGFyICopKk1BWCk7CglwcmludGYoImVudGVyIHN0cmluZ1xuIik7CglzY2FuZigiJXMiLGNoKTsKCWNoYXIgKnRlbXAgPSBjaDsKCXdoaWxlKCp0ZW1wKyspCgkJY291bnQrKzsKCglmb3IoaT0wO2k8Y291bnQ7aSsrKQoJCXsKCQkJc3VmZltpXSA9IGNoK2k7CgkJfQoJcXNvcnQoc3VmZixjb3VudCxzaXplb2YoY2hhciAqKSxjb21wYXJlKTsKCWZvcihpPTA7aTxjb3VudC0xO2krKykKCXsKCQlqPTA7CgkJd2hpbGUoKihzdWZmW2ldK2opICYmICooc3VmZltpKzFdK2opICYmICooc3VmZltpXStqKT09KihzdWZmW2krMV0raikpCgkJCWorKzsKCQlpZihqPm1heGxlbiltYXhsZW4gPWo7Cgl9CglwcmludGYoIm1heGxlbiBpcyAlZFxuIixtYXhsZW4pOwoJcmV0dXJuIDA7Cn0KCgoKCgoK