Cod sursa(job #175919)

Utilizator free2infiltrateNezbeda Harald free2infiltrate Data 10 aprilie 2008 16:35:33
Problema Arbori de intervale Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1.2 kb
program test;
var A : array [1..270000] of longint;
    n,i,m,o,l,mx,val : longint;
function max(a,b:longint):longint;
begin
if a>b then max := a
        else max := b;
end;


procedure add(nod,x,y:longint);
var mij : longint;
begin
if x=y then A[nod] := val
else begin
     mij := (x+y) div 2;
     if i<=mij then add(2*nod,x,mij)
                else add(2*nod+1,mij+1,y);
     if A[2*nod]>A[2*nod+1] then A[nod] := A[2*nod]
                            else A[nod] := A[2*nod+1];
     end;

end;



procedure request(nod,x,y:longint);
var mij : longint;
begin
if (i<=x) and (y<=val) then if mx<A[nod] then mx := A[nod]
else
else begin
        mij := (x+y) div 2;
        if i<=mij then request(2*nod,x,mij);
        if mij<val then request(2*nod+1,mij+1,y);
        end;
end;



begin
assign(input,'arbint.in');
reset(input);
assign(output,'arbint.out');
rewrite(output);

readln(n,m);
for i := 1 to n do begin
read(val);
add(1,1,n);
end;
readln;


for l := 1 to m do begin
readln(o,i,val);
if o=0 then begin
            mx := 0;
            request(1,1,n);
            writeln(mx);
            end
else add(1,1,n);
end;

close(input);
close(output);

end.