TLE,求助
查看原帖
TLE,求助
1068555
chen_yi_cheng楼主2024/1/20 22:22
#include<bits/stdc++.h>
using namespace std;
int n,q;
int h[1000010];
struct node
{
	int l,r;
	int w;
}tree[4000010];
void Build(int k,int l,int r)
{
	tree[k].l=l;
	tree[k].r=r;
	if(l==r)
	{
		tree[k].w=h[l];
		return;
	}
	int mid=(l+r)/2;
	Build(k*2,l,mid);
	Build(k*2+1,mid+1,r);
}
int maxn=0;
int minn=1e9;
void ansAsk(int k,int l,int r)
{
	if(l>tree[k].r||r<tree[k].l)
	{
		return;
	}
	if(tree[k].l==tree[k].r)
	{	 
		maxn=max(maxn,tree[k].w);
		minn=min(minn,tree[k].w);
		return;
	}
	int mid=(l+r)/2;
	ansAsk(k*2,l,r);
	ansAsk(k*2+1,l,r);
}
int main()
{
	cin>>n>>q;
	for(int i=1;i<=n;i++)
	{
		cin>>h[i];
	}
	Build(1,1,n);
	for(int i=1;i<=q;i++)
	{
		int a,b;
		cin>>a>>b;
		maxn=0;
		minn=1e9;
		ansAsk(1,a,b);
		cout<<maxn-minn<<endl;
	}
	return 0;
}
2024/1/20 22:22
加载中...