E

学术版

```cpp #include<bits/stdc++.h> using namespace std; #define int long long #define pb push_back #define mp make_pair #define fi first #define se second void IOS() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); } void file(string file_name) { freopen((file_name+".in").c_str(),"r",stdin); freopen((file_name+".out").c_str(),"w",stdout); } int n,q,a[200010]; list<int>l; map<int,list<int>::iterator>m; signed main() { //IOS(); //file(""); cin>>n; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=n;i++)l.pb(a[i]); for(list <int>::iterator it=l.begin();it!=l.end();it++) { m[*it]=it; } cin>>q; while(q--) { int opt,x,y; cin>>opt>>x; if(opt==1) { cin>>y; list <int>::iterator it=m[x]; it++; l.insert(it,y); m[y]=--it; //这里 } else { list <int>::iterator it=m[x]; l.erase(it); } } for(list <int>::iterator i=l.begin();i!=l.end();i++)cout<<(*i)<<' '; return 0; } ``` STL 的链表插入是在给定位置前方新加一个节点,故要 --it。
by xz001 @ 2024-03-09 22:07:00


@[xz001](/user/674967) 懂了,thx
by BugGod @ 2024-03-09 22:47:45


|