Cod sursa(job #505238)

Utilizator vendettaSalajan Razvan vendetta Data 1 decembrie 2010 09:24:12
Problema Arbori de intervale Scor 30
Compilator fpc Status done
Runda Arhiva educationala Marime 1.22 kb
var
    f,g:text;
    max,a,b,x,n,m,i,j:longint;
    v:array[1..100000] of longint;

function divmax(p,q:longint):longint;
    var
        mij:integer;
        max1,max2:longint;
    begin
        if p=q then divmax:=v[p]
        else
            begin
            mij:=(p+q) div 2;
            max1:=divmax(p,mij);
            max2:=divmax(mij+1,q);
            if (max1>max2) then divmax:=max1
                            else divmax:=max2;
            end;
    end;

begin
    assign(F,'arbint.in');reset(F);
    assign(g,'arbint.out');rewrite(g);
    readln(f,n,m);
    for i:=1 to n do read(f,v[i]);
    for i:=1 to m do
        begin
            read(f,x,a,b);
            if x=0 then
                begin
                if b-a=1 then
                if v[b]>v[a] then max:=v[b]
                             else max:=v[a];
                if b-a<>1 then max :=divmax(a,b);
                    {begin
                    max:=v[a];
                    for j:=a+1 to b do
                        if v[j]>max then max:=v[j];
                    end;
                    }
                writeln(g,max);
                end;
            if x=1 then v[a]:=b;
        end;
    close(f);close(g);
end.