KMP算法。。。
# include <iostream>
using namespace std;
int a[1000100];
int b[10010];
int p[1000100];
int main()
{
int n, m;
int T;
scanf("%d", &T);
while (T --){
scanf("%d %d", &n, &m);
for (int i = 1; i <= n; i ++){
scanf("%d", &a[i]);
}
for (int i = 1; i <= m; i ++){
scanf("%d", &b[i]);
}
p[1] = 0;
int j = 0;
for (int i = 2; i <= m; i ++){
while (j > 0 &&b[j+1] != b[i])j = p[j];
if (b[j+1] == b[i]) j ++;
p[i] = j;
}
j = 0;
int ans = -1;
for (int i = 1; i <= n; i ++){
while (j > 0 && b[j+1] != a[i])j = p[j];
if (b[j+1] == a[i])j ++;
if (j == m){
ans = i-m+1;
break;
}
}
printf("%d/n", ans);
}
return 0;
}