CF1682B AND Sorting 题解
首先,我们按照题意,可以用 0 来作为中间的一个数来交换其他两个数,这种元素肯定是有的,那就是所有不在正确位置上的所有数的 AND 值,我们可以开一个数组 a 来模拟这个过程,a_i & a_j = X,那这里的 X 就起到我们的 0 的作用了。
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 10;
int a[N];
int T, n;
int main() {
cin >> T;
while(T--) {
cin >> n;
int ans = INT_MIN;
for(int i = 0 ;i < n;i ++ ){
cin >> a[i];
if(ans == INT_MIN && a[i] != i) ans = a[i];
else if(a[i] != i) ans &= a[i];
}
cout << max(0, ans) << endl;
}
return 0;
}