#include typedef long long ll; typedef unsigned long long ull; #define FOR(i,a,b) for(int (i)=(a);i<(b);i++) #define REP(i,n) FOR(i,0,n) #define RANGE(vec) (vec).begin(),(vec).end() using namespace std; class XorMinMax { public: void solve(void) { int n; cin>>n; vector a(n); REP(i,n) cin>>a[i]; // 先頭からみていく。 k ビット目が全ての A[i] で 0 or 1 なら // x の k ビット目は 0 or 1 に確定する。 // // そうでないとき x の k ビット目を 0 or 1 にするかで場合分けがあるが、 // どれかの A[i] xor x の k ビット目は 1 にせざるを得なくてそれがどの A[i] // かで場合わけすることになる。 // // 事前にソートしておく sort(RANGE(a)); // a[i..j] の k ビット目以下の xor での最小値 function calc = [&](int i, int j, int k) { if (k < 0) return 0; int ii; for (ii = i; ii <= j; ++ii) if (a[ii] & 1<solve(); delete obj; return 0; } #endif