#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))
#define MIN(a, b) ((a) > (b) ? (b) : (a))
#define MAXN 50000
int num[MAXN] = {0};
struct SegmentTree
{
int left;
int right;
int maxValue;
int minValue;
}dwSegmen[4 * MAXN];
int maxValue = 0;
int minValue = 0;
void constrcutMax(int index, int left, int right)
{
dwSegmen[index].left = left;
dwSegmen[index].right = right;
if (left == right)
{
dwSegmen[index].maxValue = dwSegmen[index].minValue = num[left];
return;
}
int mid = (left + right) >> 1;
constrcutMax((index << 1) + 1, left, mid);
constrcutMax((index << 1) + 2, mid + 1, right);
dwSegmen[index].maxValue = MAX(dwSegmen[(index << 1) + 1].maxValue, dwSegmen[(index << 1) + 2].maxValue);
dwSegmen[index].minValue = MIN(dwSegmen[(index << 1) + 1].minValue, dwSegmen[(index << 1) + 2].minValue);
线段树--求区间最大差值
最新推荐文章于 2023-07-15 21:38:03 发布