线段树求调【玄关】
查看原帖
线段树求调【玄关】
1115392
small_moon楼主2024/9/28 16:34

呜呜呜救救蒟蒻吧>﹏<

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int read();
struct Node{
	int maxx,minn,left,right;
}t[N];
int n,v[N];
void pushup(int k)
{
	t[k].maxx=max(t[k<<1].maxx,t[k<<1|1].maxx);
	t[k].minn=min(t[k<<1].minn,t[k<<1|1].minn);
}
void build(int k,int l,int r)
{
	t[k].left=l; t[k].right=r;
	if(l==r)
	{
		t[k].maxx=t[k].minn=v[l];
		return;
	}
	int mid=l+r>>1;
	build(k<<1,l,mid); build(k<<1|1,mid+1,r);
	pushup(k);
}
int main()
{
	n=read();
	for(int i=1;i<=n;i++) v[i]=read();
	build(1,1,n);
	printf("%d",t[1].maxx-t[2].minn);
	return 0;
}
int read()
{
	int x=0,f=1; char ch=getchar();
	while(ch<'0' || ch>'9')
	{
		if(ch=='-') f=-1;
		ch=getchar();
	}
	while(ch>='0' && ch<='9')
	{
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
2024/9/28 16:34
加载中...