给你1-n的n个正整数的数组a和b,问数组b的每个元素在a中的“位置”是怎样的,“位置”理解为把数组a立起来,下标为0在上,每次取数组b中的元素时,要把这个元素和其上面的元素都取了(如果有的话).
思路是记录数字在数组a中出现的下标,再用一个now维护当前的位置。
#include <bits/stdc++.h>
using namespace std;
int n,a[202020],b[202020],pos[202020],now=-1;
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin>>n;
for(int i = 0;i<n;i++){
cin>>a[i];
pos[a[i]] = i;
}
for(int i = 0;i<n;i++) cin>>b[i];
for(int i =0 ;i<n;i++){
if(now>pos[b[i]]) cout<<0<<' ';
else{
cout<<pos[b[i]] - now <<' ';
now = pos[b[i]];
}
}
return 0;
}