离线思想(把指令存起来后从后往前遍历)
#include<stdio.h> const int maxn=1e5+7; int a[maxn]; int p[maxn]; int v[maxn]; int main() { int n,m; 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",&p[i]); } for(int i=m;i>=1;i--) { if(!v[p[i]]) { v[p[i]]=1; printf("%d ",p[i]); } } for(int i=1;i<=n;i++) { if(!v[a[i]]) printf("%d ",a[i]); } }