Cod sursa(job #1729716)

Utilizator stefzahZaharia Stefan Tudor stefzah Data 15 iulie 2016 15:23:24
Problema BMatrix Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.55 kb
#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();
}