#include<bits/stdc++.h>
#define LL long long
using namespace std;
inline int read(){
int s=0,w=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){s=s*10+ch-'0';ch=getchar();}
return s*w;
}
int a[105],p[32];
inline bool get_LB(int n){
for(int i=31;i>=0;i--)
if(n>>i){
if(!p[i]){p[i]=n;break;}
else n^=p[i];
}
return n>0;
}
int main(){
LL ans=0;int n=read();
for(int i=1;i<=n;i++)a[i]=read();
sort(a+1,a+n+1);
for(int i=n;i;i--)
if(!get_LB(a[i]))ans+=a[i];
printf("%lld\n",ans);
return 0;
}
原文:https://www.cnblogs.com/PPXppx/p/10864444.html