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;
}