题意:
解法:
每次操作只有一开始最上面的那个会被操作,
因此每次操作都是对同一张牌进行操作,
由于只有50种颜色,那么我们开一个大小为50的数组,存储每种颜色的最上位置,
对于每次操作,O(50)暴力修改其他牌的位置即可.
code:
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxm=2e6+5;
int a[maxm];
int n,q;
void solve(){
cin>>n>>q;
for(int i=1;i<=n;i++){
int x;cin>>x;
if(!a[x])a[x]=i;
}
while(q--){
int x;cin>>x;
cout<<a[x]<<' ';
for(int i=1;i<=50;i++){
if(i==x||!a[i])continue;
if(a[i]<a[x])a[i]++;
}
a[x]=1;
}
}
signed main(){
ios::sync_with_stdio(0);
solve();
return 0;
}