Pagini recente » Cod sursa (job #1550418) | Cod sursa (job #2146738) | Cod sursa (job #842980) | Cod sursa (job #1158830) | Cod sursa (job #1692646)
Program CautBin;
type Intro=1..100004;
var n,m,i,b:Intro;
o:byte;
fi,fo:text;
a:array[Intro] of longint;
Procedure Caut0(key:Intro);
var st,dr,pivot:Intro;
begin
st:=1;
dr:= n;
while (st <= dr) do
begin
pivot:= st + (dr - st) div 2;
if (a[pivot] <= key) then st:= pivot + 1
else dr:= pivot - 1;
end;
if (a[dr]=key) then Writeln(fo,dr)
else Writeln(fo,-1);
end;
Procedure Caut1(key:Intro);
var st,dr,pivot:Intro;
begin
st:=1;dr:=n;
while (st <= dr) do begin
pivot:=st + (dr - st) div 2;
if(a[pivot] <= key) then st:= pivot + 1
else dr:= pivot - 1;
end;
Writeln(fo,dr);
end;
Procedure Caut2(key:Intro);
var st,dr,pivot:Intro;
begin
st:= 1;
dr:= n;
while(st <= dr) do begin
pivot:=st + (dr - st) div 2;
if(a[pivot] >= key) then dr:= pivot - 1
else st:= pivot + 1;
end;
Writeln(fo,st);
end;
begin
assign(fi,'cautbin.in');
assign(fo,'cautbin.out');
reset(fi);rewrite(fo);
Readln(fi,n);
for i:=1 to n do Read(fi,a[i]);
Readln(fi,m);
for i:=1 to m do begin
o:=0;
Read(fi,o);Read(fi,b);
if (o = 0) then caut0(b);
if (o = 1) then caut1(b);
if (o = 2) then caut2(b);
end;
close(fi);close(fo);
end.