Untitled

 avatar
unknown
plain_text
a year ago
959 B
7
Indexable
   int n;
    cin>>n;
    int b[n-1];
    for (int i=0;i<n-1;++i)cin>>b[i];
    int a[n];
    a[0]=b[0];
    for (int i=1;i<n;++i)
    {
        a[i]=0;
        int prv=a[i-1];
        for (int k=29;k>=0;k--)
        {
            int x=((1<<k)&b[i-1]);
            int y=((1<<k)&prv);
            if (x && y)
            {
                a[i]+=(1<<k);
                continue;
            }
            if (y==0 && x)
            {
                cout<<-1<<endl;
                return;
            }
            if (y==0 && x==0)
            {
                a[i]+=(1<<k);
            }
            else if (x==0 && y)
            {
                if (i-2>=0) {
                    int z=(b[i-2]&(1<<k));
                    if (z==0) {
                        a[i - 1] ^= (1 << k);
                        a[i] += (1 << k);
                    }
                }
            }
        }
    }
    for (int i=0;i<n;++i)cout<<a[i]<<' ';
    cout<<endl;
Editor is loading...
Leave a Comment