一般用来求区间最大值最小值的:
#include<cstdio>
#include <iostream>
using namespace std;
const int maxn=10010;
int a[maxn];
struct node
{
int left,right,min,max;
}num[maxn<<2];
int buildmin(int left,int right,int cnt)
{
int mid;
num[cnt].left=left;
num[cnt].right=right;
if(left==right)
return num[cnt].min=a[left];
mid=(left+right)>>1;
return num[cnt].min=min(buildmin(left,mid,cnt*2),buildmin(mid+1,right,cnt*2+1));
}
int buildmax(int left,int right,int