YBT金牌导航元素 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; struct jgt { long long id,magic; }a[1010]; long long d[64]; bool cmp(jgt t1,jgt t2) { return t1.magic>t2.magic; } bool add(long long x) { for(long long i=62;i>=0;--i) if(x&(1ll<<i)) if(d[i])x^=d[i]; else{d[i]=x;return 1;} return 0; } int main() { long long n,i,ans; for(scanf("%lld",&n),i=0;i<n;++i) scanf("%lld%lld",&a[i].id,&a[i].magic); sort(a,a+n,cmp); for(ans=i=0;i<n;++i) if(add(a[i].id))ans+=a[i].magic; printf("%lld",ans); return 0; }