CSES - Shared codeLink to this code: https://cses.fi/paste/59d7d19510bd28b06959cb/
#include<iostream>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
vector<int>solution;
int node;
void dfs(set<int>*graph,int u){
while(!graph[u].empty()){
node=*graph[u].begin();
graph[u].erase(node);
dfs(graph,node);
}
solution.emplace_back(u&1);
}
int main(){
int n,len;
cin>>n;
if(n==1){
puts("01");
return 0;
}
len=1<<(n-1);
set<int>graph[len];
for(int i=0;i<len;i++){
graph[i].insert((len-1)&((i<<1) | 1));
graph[i].insert((len-1)&(i<<1));
}
dfs(graph,0);
reverse(solution.begin(),solution.end());
for(int i=1;i<n-1;i++)cout<<0;
for(int i:solution)cout<<i;
return 0;
}
// #include<iostream>
// using namespace std;
// inline int v(char c){
// return c-'0';
// }
// int main(){
// string s;
// cin>>s;
// for(int i=0;i<s.size()-2;i++){
// cout<<v(s[i])*4+v(s[i+1])*2+v(s[i+2])<<endl;
// }
// }