[2020年10月28日普级组]1404.最大异域和
最 大 异 或 和 最大异或和 最大异或和
题目解析
Code
#include <cstdio>
#include <iostream>
#define ll long long
using namespace std;
int n;
ll sum, ans, x, f[40];
int main ()
{
scanf ("%d", &n);
f[0] = 1;
for (int i = 1; i <= 30; ++ i)
f[i] = f[i - 1] * 2;
for (int i = 1; i <= n; ++ i)
{
scanf ("%lld", &x);
sum = 0;
for (int j = 30; j >= 0; j--)
if (f[j] && sum + f[j] <= x)
{
sum += f[j];
f[j] = 0;
}
ans += sum;
}
printf ("%lld", ans);
return 0;
}