//非常好的算法,代码很短,20来行就可以,时间也不差0.060,但是考虑是否可以更快
//这个算法用到了“相对位置”的思想,并且就本题而言还有一个很重要的结论就是,假设
//移动了k个元素,那么这k个元素一定是最后结果的那个序列的前k个元素,而且易知,
//越先移动的元素一定会越被压在移动的元素的底部
#include <stdio.h> #include <string.h> char name[210][100],standard[210][100]; int main() { int T,i,j,n; scanf("%d",&T); while(T--) { scanf("%d",&n); getchar(); for(i=1; i<=n; i++) gets(name[i]); for(i=1; i<=n; i++) gets(standard[i]); for(i=j=n; i>=1; i--) if( !strcmp(name[i] , standard[j]) ) j--; for(; j>=1; j--) printf("%s\n",standard[j]); printf("\n"); } return 0; }