类似归并排序
1.先给两组前n/2个位都置1。
2.按归并顺序依次置1。
#include<iostream>
#include<cstring>
using namespace std;
int n;
int a[100001];
int b[100001];
char ans1[100001];
char ans2[100001];
int main(){
cin>>n;
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
for(int i = 0; i < n; i++){
cin>>a[i]>>b[i];
ans1[i]=ans2[i]='0';
}
ans1[n]=ans2[n]='\0';
int tmp=0;
for(int i=0,j=0;tmp<n; ){
if(a[i]<b[j]){
ans1[i]='1';
i++;
}
else{
ans2[j]='1';
j++;
}
tmp++;
}
int k=n/2;
for(int i=0;i<k;i++){
ans1[i]=ans2[i]='1';
}
cout<<ans1<<endl<<ans2<<endl;
return 0;
}