Pagini recente » Cod sursa (job #1465939) | Cod sursa (job #722335) | Cod sursa (job #1957408) | Cod sursa (job #3259885) | Cod sursa (job #226926)
Cod sursa(job #226926)
program cautabin;
var A:array[1..100000] of longint;
n,m: longint;
k: byte;
x: longint;
i: longint;
function cb1(x:longint):longint;
var s,d,t: longint;
begin
cb1:=-1; s:=1;d:=n;
while (s<=d) do
begin
t:=s+(d-s) shr 1;
if A[t]>x then d:=t-1
else
if A[t]<x then s:=t+1
else
begin
cb1:=t;
exit;
end;
end;
end;
function cb2(x:longint):longint;
var l,t,s,d: longint;
begin
l:=0; s:=1; d:=n;
while (s<=d) do
begin
t:=s+(d-s) shr 1;
if A[t]<=x then
begin
l:=t;
s:=t+1;
end
else d:=t-1;
end;
cb2:=l;
end;
function cb3(x:longint):longint;
var l,t,s,d: longint;
begin
l:=n+1; s:=1; d:=n;
while (s<=d) do
begin
t:=s+(d-s) shr 1;
if A[t]>=x then
begin
l:=t;
d:=d-1;
end
else
s:=t+1;
end;
cb3:=l;
end;
begin
assign(input, 'cautbin.in');
reset(input);
assign(output,'cautbin.out');
rewrite(output);
read(n);
for i:=1 to n do
read(A[i]);
read(m);
for i:=1 to m do
begin
read(k,x);
if k=0 then
writeln(cb1(x))
else
if k=1 then
writeln(cb2(x))
else
writeln(cb3(x));
end;
close(input);
close(output);
end.