// Problem: P7912 [CSP-J 2021] 小熊的果篮
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P7912
// Memory Limit: 512 MB
// Time Limit: 1000 ms
//
// Powered by CP Editor (https://cpeditor.org)
#include<bits/stdc++.h>
const int N=1e6+10,INF=INT_MAX;
using namespace std;
namespace fastIO{
int read(){
int x=0;
bool f=1;
char ch=getchar();
for(;ch<'0'||ch>'9';ch=getchar()) if(ch=='-') f=0;
for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+(ch-'0');
return (f==0?-x:x);
}
void read(int&a){a=read();}
void read(int&a,int&b){a=read(),b=read();}
void read(int&a,int&b,int&c){a=read(),b=read(),c=read();}
void read(int *a,int len){for(int i=1;i<=len;i++)a[i]=read();}
void write(int a,char t='\0'){
if(a==0) putchar('0');
if(a<0) putchar('-'),a=-a;
char ch[1<<20];
int x=a,tot=0;
for(;x;x/=10)
{
ch[++tot]=(x%10)+'0';
}
for(;tot;tot--) putchar(ch[tot]);
putchar(t);
}
void write(int a,int b){write(a),write(b);}
void write(int a,int b,int c){write(a),write(b),write(c);}
void write(int *a,int len){for(int i=1;i<=len;i++)write(a[i]);}
}
using namespace fastIO;
int n;
set<int>a[N];
int main(){
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
a[x].insert(i);
}
a[0].insert(INF);
a[1].insert(INF);
int nw,f=*a[0].begin()<*a[1].begin()?0:1;
while(!f&&a[0].size()>1||f&&a[1].size()>1)
{
nw=*a[f].upper_bound(nw);
if(nw==INF)
{
nw=0;
f=*a[0].begin()<*a[1].begin()?0:1;
cout<<'\n';
continue;
}
cout<<nw<<' ';
a[f].erase(nw);
f=!f;
}
cout<<'\n';
while(a[0].size()>1) cout<<*a[0].begin()<<'\n',a[0].erase(*a[0].begin());
while(a[1].size()>1) cout<<*a[1].begin()<<'\n',a[1].erase(*a[1].begin());
return 0;
}
hack数据:
5
1 1 0 0 1
本地输出:
1 3 5
2 4
luogu输出:
2 3 5
1 4