TLE求条
  • 板块P11016 XOR Pairs
  • 楼主hyl_____
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/31 22:14
  • 上次更新2024/9/1 11:30:06
查看原帖
TLE求条
1035028
hyl_____楼主2024/8/31 22:14
#include<bits/stdc++.h>
using namespace std;
int a[1000005];
//int vis[1000005];
inline int check(register int i,register int j)
{
	register int ru=i^j;
	if(ru>max(i,j)) return 1;
	return 0;
}
int main(){
	register int n,q;
    scanf("%d%d",&n,&q);
    register long long sum=0;
    for(register int j=1;j<=n;j=-~j)
	{
    	scanf("%d",&a[j]);
    	for(register int i=1;i<j;i=-~i)
    	{
    		if(a[i]==a[j]) continue;
    		if(check(a[i],a[j])) sum++;
		}
	}
	for(int register i=1;i<=q;i=-~i)
	{
		register int x,y;
		scanf("%d%d",&x,&y);
		register long long ans=0;
		register int mem=a[x];
		a[x]=y;
		for(register int j=1;j<=n;j=-~j)
		{
			if(j<x) 
			{
				if(check(a[j],mem)==0&&check(a[j],a[x])==1) ans++;
				else if(check(a[j],mem)==1&&check(a[j],a[x])==0) ans--;
			}
			else if(j>x)
			{
				if(check(mem,a[j])==0&&check(a[x],a[j])==1) ans++;
				else if(check(mem,a[j])==1&&check(a[x],a[j])==0) ans--;
			}
		}
		sum+=ans;
		printf("%d\n",sum);
	}
    return 0;
}
2024/8/31 22:14
加载中...