Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using namespace std;unsigned msb(unsigned n) {unsigned mask = 1 << 31;while(mask && (mask & n == 0)) mask >>= 1;return mask;}void process() {int n;cin >> n;vector<int> v(n);for (int i = 0; i < n; ++i) cin >> v[i];sort(v.rbegin(), v.rend());long long ret = 0;int mask = 0;for (int i = 0; i < n - 1; ++i) {long long const c = v[i];if (c <= mask || (c * c * c <= ret)) break;long long r = 0;for (int j = i + 1; j < n; ++j) {long long c2 = v[j];if (c2 <= mask) break;int nmask = msb(c2 & c);mask = max(mask, nmask);r = max(r, c * c2 * (c & c2));}ret = max(r, ret);}