Untitled
unknown
plain_text
a year ago
959 B
10
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