#include #include void exkmp(char s1[],char s2[],int next[],int ex[]) { int i,j,p; for (i=0,j=0,p=-1;s1[i]!='\0';i++,j++,p--) { if (p==-1) { j=0; do p++; while (s1[i+p]!='\0'&&s1[i+p]==s2[j+p]); ex[i]=p; } else if (next[j]p) ex[i]=p; else { j=0; while (s1[i+p]!='\0'&&s1[i+p]==s2[j+p]) p++; ex[i]=p; } } ex[i]=0; } char s1[100100]; char s2[100100]; int ex[100100]; int next[100100]; int ls1,ls2; bool smallerThan(int i,int j) { if (ex[j]