求助TLE
  • 板块CF1322B Present
  • 楼主Harry27182SDream
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/6/21 14:58
  • 上次更新2023/11/17 14:13:18
查看原帖
求助TLE
376997
Harry27182SDream楼主2022/6/21 14:58

RT,求调

#include<bits/stdc++.h>
using namespace std;
int n,ans,a[400005],b[400005];
bool check(int x,int y)
{
	if(x>y)return 0;
	int num=0;
	for(int i=1;i<=n;i++)
	{
		int l=1,r=1;
		while(l<=n&&b[i]+b[l]<x)l++;
		while(r<=n&&b[i]+b[r]<=y)r++;
		num+=r-l-(l<=i&&i<r);
	}
	return (num>>1)&1;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	for(int i=0;i<=25;i++)
	{
		for(int j=1;j<=n;j++)b[j]=a[j]&((1<<(i+1))-1);
		sort(b+1,b+n+1);
		int flag=check(1<<i,(1<<(i+1))-1)^check(3*(1<<i),(1<<(i+2))-2); 
		ans+=flag*(1<<i);
	}
	printf("%d",ans);
	return 0;
}
2022/6/21 14:58
加载中...