Pagini recente » Cod sursa (job #387257) | Cod sursa (job #2845277) | Cod sursa (job #3159560) | Cod sursa (job #871759) | Cod sursa (job #2345711)
#include <fstream>
#include <stack>
using namespace std;
#define FILE_NAME "biti"
ifstream fin (FILE_NAME".in");
ofstream fout(FILE_NAME".out");
const int MAXN = 20 + 2;
char adv[MAXN];
int N, MASK, K;
char sol[(1 << MAXN) + MAXN];
void euler(int nod)
{
stack < int > ST;
stack < bool > suffix;
ST.push(nod);
suffix.push(0);
while(!ST.empty())
{
nod = ST.top();
if(adv[nod] < 2)
{
suffix.push(adv[nod]);
ST.push(((nod << 1) | (adv[nod]&1)) & MASK);
++adv[nod];
}
else
{
sol[K++] = '0' + suffix.top();
ST.pop(), suffix.pop();
}
}
}
int main()
{
fin >> N;
N--;
MASK = (1 << N) - 1;
euler(0);
K--;
for(int i = 0; i < N; ++i)
sol[K++] = sol[i];
sol[K] = '\0';
fout << K << '\n' << sol;
return 0;
}