省略
省略
C++に変換後のコードはこちら
int N, X, A[5d5];
int arr[5d5], sz;
{
int i, j, k, n = 0;
rd(N,X,A(N));
rep(i,N){
if(A[i]==-1) arr[sz++] = i;
else n ^= A[i];
}
if(n==X){
rep(i,sz) A[arr[i]] = 0;
wt(A(N));
return 0;
}
if(sz==0) wt(-1), return 0;
if(sz==1){
i = X ^ n;
if(i <= X){
A[arr[0]] = i;
wt(A(N));
} else {
wt(-1);
}
return 0;
}
while(sz > 2) A[arr[--sz]] = 0;
i = X ^ n;
j = 0;
for(k=30;k>=0;k--) if(i & (1<<k)){
i ^= (1<<k);
j ^= (1<<k);
break;
}
if(i > X || j > X) wt(-1), return 0;
A[arr[0]] = i;
A[arr[1]] = j;
wt(A(N));
}
Current time: 2024年04月24日06時17分11秒
Last modified: 2019年09月01日00時50分38秒 (by laycrs)
Tags: Competitive_Programming_Incomplete AtCoder
トップページに戻る
Logged in as: unknown user (not login)