注意bit数组存放的是一个区间的最值。更新最值的时候要传递更新。查找的时候也要注意。如果已经不是在一个区间段上了,应该和num[]比。
program zhongcheng2;
var n,m,i,p,x,y:longint;
a:array[0..100000]of longint;
bit:array[0..100000]of longint;
function min(a,b:longint):longint;
begin
if a<b then min:=a else min:=b;
end;
function lowbit(x:longint):longint;
begin
lowbit:=x and (-x);
end;
function query(x,y:longint):longint;//查询
var ans:longint;
begin
ans:=a[y];
while x<=y do
begin
if y-lowbit(y)+1>=x then
begin
ans:=min(ans,bit[y]);
y:=y-lowbit(y);
end
else
begin
ans:=min(ans,a[y]);
y:=y-1;
end;
end;
query:=ans;
end;
procedure inset(x,y:longint);//插入
begin
while x&