set求助(玄关)
查看原帖
set求助(玄关)
1199534
ycy1124楼主2024/5/16 13:26
#include<bits/stdc++.h>
using namespace std;
set <int> a,b;
set <int>::iterator t,t1,k,k1;
int main(){
	int n;
	scanf("%d",&n); 
	for(int i=1;i<=n;i++){
		int ch;
		scanf("%d",&ch);
		if(ch==1)
			a.insert(i);
		else
			b.insert(i);
	}
	int x;
	bool bj;
	while(!a.empty()&&!b.empty()){
		t=a.begin();
		t1=b.begin();
		if(*t<*t1){
			x=*t;
			bj=1;//a开始 
		}
		else{
			x=*t1;
			bj=0;//b开始 
		}
		if(!a.empty()){
			k=a.end();
			k++;
		}
		if(!b.empty()){
			k1=b.end();
			k1++;
		}
		while((!b.empty()&&x<=*k1&&!bj)||(!a.empty()&&x<=*k&&bj)){
			if(bj){
				x=*t;
				printf("%d ",*t);
				t1=b.upper_bound(x);
				a.erase(t);
			}
			else{
				x=*t1;
				printf("%d ",*t1);
				t=a.upper_bound(x);
				b.erase(t1);
			}
			bj=!bj;
		}
		printf("\n");
	}
	if(a.empty()&&!b.empty()){
		while(!b.empty()){
			printf("%d",*b.begin());
			b.erase(b.begin());
		}
	}
	else{
		while(!a.empty()){
			printf("%d",*a.begin());
			a.erase(a.begin());
		}
	}
	return 0;
}
2024/5/16 13:26
加载中...