全WA求助
查看原帖
全WA求助
1200401
wnqnld_llx楼主2024/11/23 10:33
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=5e4+10;
int year[N],yu[N];
struct tree{
	int l,r,mx;
}tr[N*4];
void pushup(int p){
	tr[p].mx=max(tr[p*2].mx,tr[p*2+1].mx);
}
void build(int p,int l,int r){
	tr[p].l=l,tr[p].r=r;
	if(l==r){
		tr[p].mx=yu[l];
		return ;
	}
	int mid=l+r>>1;
	build(p*2,l,mid);
	build(p*2+1,mid+1,r);
	pushup(p);
}
int query(int p,int x,int y){
	if(tr[p].l>=x&&tr[p].r<=y){
		return tr[p].mx;
	} 
	int sum=-INT_MAX,mid=tr[p].l+tr[p].r>>1;
	if(x<=mid){
		sum=query(p*2,x,y);
	}
	if(y>mid){
		sum=max(sum,query(p*2+1,x,y));
	}
	return sum;
}
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>year[i]>>yu[i];
	}
	build(1,1,n);
	cin>>m;
	while(m--){
		int x,y;
		cin>>y>>x;
		bool bx,by;
		int yx=lower_bound(year+1,year+1+n,x)-year;
		int yy=lower_bound(year+1,year+1+n,y)-year;
		bx=(x==year[yx]);
		by=(y==year[yy]);
		if(!by){
			yy--;
		}
		int mxx=0;
		if(yx+1<=yy-1) mxx=query(1,yx+1,yy-1);
		if(bx&&by&&yx-yy==x-y&&year[yx]<year[yy]&&year[yx]>mxx){
			cout<<"ture\n";
		}
		else if((bx&&mxx>=year[yx])||(by&&mxx>=year[yy])||(bx&&by&&year[by]<=year[bx])){
			cout<<"false\n";
		}
		else{
			cout<<"maybe\n";
		}
	}
	return 0;
}
2024/11/23 10:33
加载中...