调题就没有不疯的

这里

你结合代码看看

为什么会和左端点比大小?

你看题目,题目中说了

c,我语文不好

所以呢?

我在重构代码

等我5分钟

我语文不好,注释写的不行

请原谅

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=50005;
int rain[N],year[N],st[N][20],lg[N],n;
int find(int x){
	int l=1,r=n;
	while(l<=r){
		int mid=(l+r)/2;
		if(year[mid]==x)
            return mid;
        if(year[mid]<x)
		    l=mid+1;
		else
		    r=mid-1;
	}
	return 0; 
}
int findy(int x){
	int l=1,r=n;
	while(l<r){
		int mid=(l+r)/2;
		if(year[mid]<=x)
		    l=mid+1;
		else
		    r=mid;
	}
	return l;
}
int findx(int x){
	int l=1,r=n;
	while(l<r){
		int mid=(l+r+1)/2;
		if(year[mid]<=x)
		    l=mid;
		else
		    r=mid-1;
	}
	return l;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    cin>>n;
	map<int,int> mp;
    for(int i=1;i<=n;i++){
		cin>>year[i]>>rain[i];
		st[i][0]=rain[i];
		mp[year[i]]=i;
	}
	for(int i=2;i<=n;i++)
	    lg[i]=lg[i/2]+1;
	for(int j=1;j<=lg[n];j++){
		for(int i=1;i<=n-(1<<j)+1;i++)
		    st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]);
	}
	int q;
	cin>>q;
	while(q--){
		int y,x;
		cin>>y>>x;
        if(y>=x){
            cout<<"false\n";
            continue;
        }
        if(find(x)&&find(y)){
            int yw=find(y)+1,xw=find(x)-1;
	        int l=lg[xw-yw+1];
	        int Max=max(st[yw][l],st[xw-(1<<l)+1][l]);
			if(Max>=rain[yw-1]||rain[yw-1]<=rain[xw+1])
	            cout<<"false\n";
			else if(mp[x]-mp[y]==x-y)
				cout<<"true\n";
			else
			    cout<<"maybe\n";           
        }
        if(find(x)&&!find(y)){
            int yw=findy(y),xw=find(x)-1;
	        int l=lg[xw-yw+1];
	        int Max=max(st[yw][l],st[xw-(1<<l)+1][l]);
			if(Max>=rain[xw+1])
	            cout<<"false\n";  
			else
			    cout<<"maybe\n";            
        }
        if(find(y)&&!find(x)){
            int yw=find(y)+1,xw=findx(x);
	        int l=lg[xw-yw+1];
	        int Max=max(st[yw][l],st[xw-(1<<l)+1][l]);
			if(Max>=rain[yw-1])
	            cout<<"false\n";  
			else
			    cout<<"maybe\n";     
        }
        if(!find(x)&&!find(y))
            cout<<"maybe\n";
	}
	return 0;	
}

这下10分了)

你那么多find干啥?

我也不清楚,昨天无意识的时候瞎打的)

二分问题

如果二分挂了我就真的挂了

我是说二分部分的问题

具体哪个函数?

你只要一个就够

额,我这个写法有亿点奇怪

就是x取<=,y取>=