本题本质上就是寻找b数组中的值在a数组上的位置,且每找到一个就将a中找到的那个值移动到数组第一位。移动的操作为:用e储存要移动到首位的值,然后用循环将其前面的所有数向后移动一位,最后将e放在首位。 理解之后算法比较简单,用函数更加简洁。 #include<stdio.h> int main() { int n,q,i,j=0,l=0,e,h=0; scanf("%d%d",&n,&q); int a[300001],b[300001],c[300001]; &...