Pagini recente » Cod sursa (job #2557332) | Cod sursa (job #1537268) | Cod sursa (job #102406) | Cod sursa (job #1622810) | Cod sursa (job #1113700)
program cautarediv_iminsircrescator;
var v:array[1..100000] of longint;
i,m,n,a:longint; t:byte; f,g:text;
function div_imp_bin(p,q:longint):longint;
var mij:longint;
begin
if q<p then div_imp_bin:=-1
else begin
mij:=(p+q) div 2;
if (a=v[mij]) and (v[mij+1]>a) then div_imp_bin:=mij
else if a<v[mij] then div_imp_bin:=div_imp_bin(p,mij-1)
else div_imp_bin:=div_imp_bin(mij+1,q);
end;
end;
function div_imp_bin2(p,q:longint):longint;
var mij:longint;
begin
if q<p then div_imp_bin2:=0
else begin
mij:=(p+q) div 2;
if (a<=v[mij]) and (a<v[mij+1]) then div_imp_bin2:=mij
else if a<v[mij] then div_imp_bin2:=div_imp_bin2(p,mij-1)
else div_imp_bin2:=div_imp_bin2(mij+1,q);
end;
end;
function div_imp_bin3(p,q:longint):longint;
var mij:longint;
begin
if q<p then div_imp_bin3:=0
else begin
mij:=(p+q) div 2;
if (v[mij]>=a) and (v[mij-1]<a) then div_imp_bin3:=mij
else if (a<=v[mij]) then div_imp_bin3:=div_imp_bin3(p,mij-1)
else div_imp_bin3:=div_imp_bin3(mij+1,q);
end;
end;
begin
assign(f,'cautbin.in'); reset(f);
readln(f,n);
for i:=1 to n do
read(f,v[i]);
readln(f);
readln(f,m);
assign(g,'cautbin.out'); rewrite(g);
for i:=1 to m do begin
read(f,t);
readln(f,a);
writeln(t,' ',a);
case t of
0:writeln(g,div_imp_bin(1,n));
1:writeln(g,div_imp_bin2(1,n));
2:writeln(g,div_imp_bin3(1,n));
end;
end;
close(f);
close(g);
end.