Pagini recente » Cod sursa (job #2240697) | Cod sursa (job #1197092) | Cod sursa (job #2933857) | Cod sursa (job #3252831) | Cod sursa (job #1729716)
#include <fstream>
using namespace std;
ifstream fin("biti.in");
ofstream fout("biti.out");
int n,p,a[1100000][2],st[1100000],ok;
bool v[1100000],sol[25],k[1100000];
void Afisare()
{int i,x,j;
fout<<n+p*2-1<<"\n";
for(i=0;i<2*p;i++)
{x=st[i];
j=0;
//fout<<x<<" ";
if(i==0){while(x!=0)
{j++;
sol[j]=x%2;
x=x/2;
}
for(j=n;j>=1;j--)
fout<<sol[j];
}
else fout<<x%2;
}
}
int main()
{int i,top;
fin>>n;
p=1;
for(i=1;i<=n-1;i++)
p=p*2;
for(i=0;i<2*p;i++)
{if(i<p){a[i][0]=i*2;
a[i][1]=i*2+1;
}
else {a[i][0]=i*2-p*2;
a[i][1]=i*2-p*2+1;
}
//fout<<a[i][0]<<" "<<a[i][1]<<"\n";
}
v[0]=1;
st[0]=0;
for(top=1;top<2*p;top++)
{ok=0;
if(v[a[st[top-1]][0]]==0&&k[top]==0){st[top]=a[st[top-1]][0];//fout<<st[top]<<" ";
v[st[top]]=1;ok=1;
}
else if(v[a[st[top-1]][1]]==0){st[top]=a[st[top-1]][1];//fout<<st[top]<<" ";
v[st[top]]=1;ok=1;
}
k[top]=0;
// fout<<st[top]<<" ";
if(ok==0){v[st[top-1]]=0;top=top-2;k[top+1]=1;}
}
Afisare();
}