Cod sursa(job #236798)

Utilizator DanielGGlodeanu Ioan Daniel DanielG Data 28 decembrie 2008 15:17:27
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 1.86 kb
var v:array[1..100000] of longint; {00}
n,m,i,k,mij,r,st,dr,x,c: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,v[i]);
read(f,m);
for k:=1 to m do
    begin
    read(f,c,x);
    if not c then
           begin
           st:=1; dr:=n; ok:=true;
              while (st<=dr) and ok do
                    begin
                    mij:=st+(dr-st) div 2;
                    if x>v[mij] then st:=mij+1
                       else if x<v[mij] then dr:=mij-1
                            else
                                begin
                                writeln(g,mij);
                                ok:=false;
                                break;
                                end;
                    end;
           if ok then writeln(g,-1);
           end
      else if c=1 then
              begin
              st:=1; dr:=n; r:=0;
              while (st<=dr) do
                    begin
                    mij:=st+(dr-st) div 2;
                    if x>=v[mij] then   begin
                                        st:=mij+1;
                                        r:=mij;
                                        end
                       else dr:=mij-1;
                    end;
              writeln(g,r);
              end
         else
              begin
              st:=1; dr:=n; r:=0;
              while (st<=dr) do
                    begin
                    mij:=st+(dr-st) div 2;
                    if x<=v[mij] then   begin
                                        dr:=mij-1;
                                        r:=mij;
                                        end
                       else st:=mij+1;
                    end;
              writeln(g,r);
              end;
    end;
close(f);
close(g);
end.