老师求条
查看原帖
老师求条
1517836
WAMLE楼主2025/7/30 10:31
#include<bits/stdc++.h>
using namespace std;
const long long N=1e6+17;
long long n,m;
long long op,x,y,hed;
bool vis[N];
long long l[N],r[N];
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>m;
    for(long long i=1;i<=n;i++){
    	l[i]=i-1;
    	r[i]=i+1;
    	if(i+1>n) r[i]=0;
    	vis[i]=1;
	}
	long long op=0,x=0,y=0;
	while(m--){
		cin>>op;
		if(op==1){
			cin>>x>>y;
			if(x==y) continue;
			if(vis[x]){
				vis[x]=0;
				if(r[x]){
					l[r[x]]=l[x];
				}
				if(l[x]){
					r[l[x]]=r[x];
				}
				if(hed==x){
					hed=r[x];
				}
			}
			vis[x]=1;
			l[x]=l[y];
			r[x]=y;
			if(l[x]) r[l[y]]=x;
			l[y]=x;
			if(y==hed) hed=x;
		}
		if(op==2){
			cin>>x>>y;
			if(vis[x]==0)
			if(x==y) continue;
			if(vis[x]){
				vis[x]=0;
				if(r[x]){
					l[r[x]]=l[x];
				}
				if(l[x]){
					r[l[x]]=r[x];
				}
				if(hed==x){
					hed=r[x];
				}
			}
			vis[x]=1;
			l[x]=y;
			r[x]=r[y];
			r[y]=x;
			if(r[y]) l[r[y]]=x;
			r[y]=x;
		}
		if(op==3){
			cin>>x;
			if(vis[x]==0){
				continue;
			}
			vis[x]=0;
			if(r[x]){
				l[r[x]]=l[x];
			}
			if(l[x]){
				r[l[x]]=r[x];
			}
			if(hed==x){
				hed=r[x];
			}
		}
	}
	if(hed==0){
		cout<<"Empty!"<<'\n';
		return 0;
	}
	for(long long i=hed;i;i=r[i]){
		cout<<i<<" ";
	}
	return 0;
}

2025/7/30 10:31
加载中...