RE求调
查看原帖
RE求调
377434
tian_jun_cheng楼主2022/4/5 09:30
#include<bits/stdc++.h>
using namespace std;
set <int> s0,s1;
int main()
{
	int n;
	int st=0;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		int t;
		cin>>t;
		if(t==0)
			s0.insert(i);
		else
			s1.insert(i);
	}
	while(n)
	{
		if(s0.empty())
		{
			for(set <int> ::iterator itit=s1.begin();itit!=s1.end();itit++)
				cout<<*itit<<endl;
			return 0;
		}
		if(s1.empty())
		{
			for(set <int> ::iterator itit=s0.begin();itit!=s0.end();itit++)
				cout<<*itit<<endl;
			return 0;
		}
		bool f=false;//小的在s1 
		if(*s1.begin()>*s0.begin())
			f=true;
		if(f==false)
		{
			set <int> ::iterator it=s1.begin();
			cout<<*it<<" ";
			n--;
			s1.erase(*it);
			set <int> ::iterator s0end=s0.end();
			s0end--;
			while(*s0end>*it)
			{
				for(set <int> ::iterator itt=s0.begin();itt!=s0.end();itt++)
					if(*itt>*it)
					{
						it=itt;
						cout<<*itt<<" ";
						n--;
						s0.erase(itt);
						break;
					}
				set <int> ::iterator ii=s1.end();
				ii--;
				if(*ii<*it)
					break;
				for(set <int> ::iterator itt=s1.begin();itt!=s1.end();itt++)
					if(*itt>*it)
					{
						it=itt;
						cout<<*itt<<" ";
						n--;
						s1.erase(itt);
						break;
					}
			}
			cout<<endl;
		}
		else
		{
			set <int> ::iterator it=s0.begin();
			cout<<*it<<" ";
			n--;
			s0.erase(*it);
			set <int> ::iterator s1end=s1.end();
			s1end--;
			while(*s1end>*it)
			{
				for(set <int> ::iterator itt=s1.begin();itt!=s1.end();itt++)
					if(*itt>*it)
					{
						it=itt;
						cout<<*itt<<" ";
						n--;
						s1.erase(itt);
						break;
					}
				set <int> ::iterator ii=s0.end();
				ii--;
				if(*ii<*it)
					break;
				for(set <int> ::iterator itt=s0.begin();itt!=s0.end();itt++)
					if(*itt>*it)
					{
						it=itt;
						cout<<*itt<<" ";
						n--;
						s1.erase(itt);
						break;
					}
			}
			cout<<endl;
		}
	}
	return 0;
}
2022/4/5 09:30
加载中...