dalao求调
查看原帖
dalao求调
938067
__William__楼主2024/10/11 21:07
#include<bits/stdc++.h>
#define INF 200009
using namespace std;
int n;
set <int> s[2];
set<int> ::iterator itt,it,it0,it1;
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int x;
		scanf("%d",&x);
		s[x].insert(i);
	}
	s[0].insert(INF);s[1].insert(INF);
	while(s[0].size()&&s[1].size())
	{
		int p=0,x=0;
		it0=s[0].begin(),it1=s[1].begin();
		if(*it0>*it1) p=1;
		while(s[p].size())
		{
			it=s[p].lower_bound(x);
			if(it==s[p].end()) break;
			printf("%d ",*it);
			x=*it;
			s[p].erase(x);
			p=!p;
		}
		printf("\n");
	}
	int p=0;
	if(s[1].size()-1) p=1;
	itt=s[p].end();
	while(s[p].size()&&it!=itt)
	{
		it=s[p].begin();
		printf("%d ",*it);
		s[p].erase(*it);
	}
	return 0;
} 
2024/10/11 21:07
加载中...