Cod sursa(job #602936)

Utilizator andreii1Ilie Andrei andreii1 Data 13 iulie 2011 19:11:36
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.6 kb
var i,m,n,o,x,mij,st,dr,rez:longint;
    a:array[0..100000] of longint;
    f,g:text;
    ok:boolean;
begin
assign(f,'cautbin.in');
reset(f);
assign(g,'cautbin.out');
rewrite(g);
read(f,n);
for i:=1 to n do read(f,a[i]);
read(f,m);
for i:=1 to m do
        begin
        read(f,o,x);
        ok:=false;
        st:=1;
        dr:=n;
        if (o=0) then
                begin
                while (st<=dr) do
                        begin
                        mij:=(st+dr) div 2;
                        if a[mij]<=x then st:=mij+1
                        else
                         dr:=mij-1;
                        end;
        if a[mij]>x then mij:=mij-1;
        if a[mij]=x then writeln(g,mij) else
                writeln(g,-1)
                end;
        if o=1 then
                begin
                 while (st<dr) do
                        begin
                        mij:=(st+dr) div 2;
                        if a[mij]<=x then st:=mij+1
                        else
                         dr:=mij;
                        end;
                        mij:=(st+dr) div 2;
        if a[mij]>x then mij:=mij-1;
        writeln(g,mij)
                end;

          if o=2 then
          begin
                while  (st<=dr) do
                        begin
                        mij:=(st+dr) div 2;
                        if a[mij]<x then st:=mij+1
                        else   dr:=mij;
                        end;
               if a[mij]<x then mij:=mij+1;
               writeln(g,mij);
        end;
end;


close(f);
close(g);
end.