set 40pts RE求助!
查看原帖
set 40pts RE求助!
717971
liuyi0905楼主2023/11/12 10:42
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int n,t,cnt;
set<int>s[2];
vector<int>ans[N];
int Remove(set<int>&s,int x){
	auto it=s.lower_bound(x);
	if(it==s.end())return 0;
	s.erase(it);
	return *it;
}
signed main(){
	ios::sync_with_stdio(false);
	cin>>n;
    for(int i=1;i<=n;i++)cin>>t,s[t].insert(i);
    while(!s[1].empty()&&!s[0].empty()){
    	cnt++;
		int a=*s[1].begin(),b=*s[0].begin();
		if(a<b)while(1)
			for(int i=1;i>=0;i--){
				a=Remove(s[i],a);
				if(!a)goto whileEnd;
				ans[cnt].push_back(a);					
			}
		else while(1)
			for(int i=0;i<=1;i++){
				b=Remove(s[i],b);
				if(!b)goto whileEnd;
				ans[cnt].push_back(b);					
			}
		whileEnd:{}
	}
	for(int i=1;i>=0;i--)
		while(!s[i].empty()){
			ans[++cnt].push_back(*s[i].begin());
			s[1].erase(s[i].begin());
		}
	for(int i=1;i<=cnt;cout<<"\n",i++)
		for(int j=0;j<ans[i].size();j++)cout<<ans[i][j]<<" ";
    return 0;
}
2023/11/12 10:42
加载中...