关于昨晚的 F
  • 板块学术版
  • 楼主AKPC
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/5/3 08:12
  • 上次更新2024/5/3 10:39:51
查看原帖
关于昨晚的 F
540363
AKPC楼主2024/5/3 08:12

RE #7 Exit code is -1073741819

#include <bits/stdc++.h>
using namespace std;
#define int long long
#define mpr make_pair
#define fr first
#define sc second
inline int read(){
	int res=0,f=1;char c=getchar();
	while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
	while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
	return res*f;
}
const int N=2e5+5;
int T=read(),n,m,a[N];
vector<int>e[N];
signed main(){
	while (T--){
		n=read(),m=read();
		e[0].push_back(0);
		for (int i=1;i<=n;i++){
			a[i]=read(),a[i]^=a[i-1];
			e[a[i]].push_back(i);
//			cout<<a[i]<<' ';
		}
//		cout<<'\n';
		while (m--){
			int _l=read(),_r=read();
			if (a[_l-1]==a[_r]) cout<<"YES\n";
			else{
				int l=0,r=e[a[_l-1]].size()-1,x,y;
				while (l<r){
					int mid=(l+r+1)>>1;
//					cout<<l<<' '<<r<<' '<<e[a[_l-1]][mid]<<'\n'; 
					if (e[a[_l-1]][mid]>_r) r=mid-1;
					else l=mid;
				}
				x=e[a[_l-1]][l];
				l=0,r=e[a[_r]].size()-1;
				while (l<r){
					int mid=(l+r)>>1;
					if (e[a[_r]][mid]<_l) l=mid+1;
					else r=mid;
				}
				y=e[a[_r]][l];
//				cout<<x<<' '<<y<<'\n';
				if (x==_l-1||y==_r||x<=y) cout<<"NO\n";
				else cout<<"YES\n";
			}
		}
		for (int i=0;i<=n;i++) e[a[i]].clear();
	}
	return 0;
}
2024/5/3 08:12
加载中...