YBT金牌导航元素

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

猜你喜欢

转载自blog.csdn.net/weixin_46975572/article/details/118112855