#include <iostream> #include <algorithm> #include <string> using namespace std; const int N(2048*3); char tree[N]; void build(string s,int t) { if(s.size()==1) { if(s=="0") tree[t]='B'; if(s=="1") tree[t]='I'; return; } int l=s.size(); build(s.substr(0,l/2),2*t); build(s.substr(l/2,l/2),2*t+1); if(tree[2*t]==tree[2*t+1]) tree[t]=tree[2*t]; else tree[t]='F'; } void lastorder(int t) { if(tree[t]) { lastorder(2*t); lastorder(2*t+1); cout<<tree[t]; } return; } int main() { string s;int n; cin>>n>>s; build(s,1); lastorder(1); cout<<endl; return 0; } /************************************************************** Problem: 2246 User: admin Language: C++ Result: Accepted Time:51 ms Memory:2084 kb ****************************************************************/