蒟蒻改了很久没过
#include<bits/stdc++.h>
using namespace std;
int n,lt[114514],rt[114514],id;
string s;
struct node
{
int id,x;
}c[114514];
int build(string s)
{
id++;
c[id].id=id;
if(s.size()==1)
{
if(s=="0")
{
c[id].x=0;
}
else c[id].x=1;
return id;
}
int l=build(s.substr(0,s.size()/2));
int r=build(s.substr(s.size()/2,s.size()/2));
lt[id]=l;
rt[id]=r;
if(c[l].x==c[r].x) c[id]=c[l];
else c[id].x=2;
return id;
}
void print(int x)
{
if(x == -1) return;
print(lt[x]);
print(rt[x]);
if(c[x].x==0) cout<<'B';
if(c[x].x==1) cout<<'I';
if(c[x].x==2) cout<<'F';
return;
}
int main()
{
memset(lt,-1,sizeof(lt));
memset(rt,-1,sizeof(rt));
cin>>n>>s;
build(s);
print(1);
}