24分RE求调
查看原帖
24分RE求调
696431
lijunxi1楼主2023/10/7 12:48
#include <bits/stdc++.h>
using namespace std;
int xdsmax[200005],n,q,a[200005],l,r;
int js_max(int l,int r,int w)
{
	if(l==r)return xdsmax[w]=a[l];
	int mid=(l+r)/2;
	return xdsmax[w]=max(js_max(l,mid,w*2),js_max(mid+1,r,w*2+1));
}
int q_max(int l,int r,int ml,int mr,int w)
{
	//cout<<l<<" "<<r<<" "<<xdsmax[w]<<"\n";
	if(l==r)return xdsmax[w];
	if(l>=ml&&r<=mr)return xdsmax[w];
	int ans=INT_MIN,mid=(l+r)/2;
	if(ml<=mid)ans=max(ans,q_max(l,mid,ml,mr,w*2));
	if(mr>mid)ans=max(ans,q_max(mid+1,r,ml,mr,w*2+1));
	return ans;
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin>>n>>q;
    for(int i=1;i<=n;i++)cin>>a[i];
    js_max(1,n,1);
    while(q--)
    {
    	cin>>l>>r;
    	cout<<q_max(1,n,l,r,1)<<"\n";
	}
}
2023/10/7 12:48
加载中...