fail[i]=k表示B[0,k]=B[i-k,i];
void KMP(int B[],int m) {
fail[0] = -1;
for (int i = 1 , j = -1; i < m ; i ++) {
while (j >= 0 && B[j+1] != B[i]) j = fail[j];
if (B[j+1] == B[i]) j ++;
fail[i] = j;
}
}
bool match(int A[],int B[],int n,int m) {
for (int i = 0 , j = 0 ; i < n ; i ++) {
while (j > 0 && B[j] != A[i]) j = fail[j-1] + 1;
if (B[j] == A[i]) j ++;
if (j == m) return true;
}
return false;
}