Cod sursa(job #236789)

Utilizator DanielGGlodeanu Ioan Daniel DanielG Data 28 decembrie 2008 15:02:46
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.55 kb
var v:array[1..1000] of longint; {00}
n,m,i,k,mij,r,st,dr,x,c:longint;
f,g:text;
begin
assign(f,'cautbin.in');reset(f);
assign(g,'cautbin.out');rewrite(g);
read(f,n);
for i:=1 to n do read(f,v[i]);
read(f,m);
for k:=1 to m do
    begin
    read(f,c,x);
    if c=0 then
           begin
           st:=1; dr:=n;
              while st<=dr do
                    begin
                    mij:=st+(dr-st) div 2;
                    if x>v[mij] then st:=mij+1
                              else dr:=mij-1;
                    end;
           if x=v[mij] then writeln(g,mij)
              else writeln(g,-1);
           end
      else if c=1 then
              begin
              st:=1; dr:=n; r:=0;
                repeat
                      mij:=st+(dr-st) div 2;
                      if  x>=v[mij] then
                            begin
                            r:=mij;
                            st:=mij+1;
                            end
                         else dr:=mij-1;
                until st>=dr;
              writeln(g,r);
              end
         else
             begin
             st:=1; dr:=n; r:=0;
                repeat
                      mij:=st+(dr-st) div 2;
                      if  x<=v[mij] then
                            begin
                            r:=mij;
                            dr:=mij-1;
                            end
                         else st:=mij+1;
                until st>=dr;
              writeln(g,r);
              end;
    end;
close(f);
close(g);
end.