表示并不会做这道题,
#include<cstdio> #include<algorithm> using namespace std; typedef long long ll; ll a[10000]; ll p[10000]; bool cmp(ll x,ll y){ return x>y; } int main(){ int n; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%lld",&a[i]); ll ans=0,tot=0; sort(a+1,a+1+n,cmp); for (int i=1;i<=n;i++) tot+=a[i]; for (int i=1;i<=n;i++){ ll t=a[i]; for (int j=30;j>=0;j--){ if(1&(t>>j)) { if(!p[j]) {p[j]=t;break;} else t^=p[j]; } } if(t) ans+=a[i]; } if(ans!=0) printf("%lld\n",tot-ans); else printf("-1\n"); return 0; }