Pagini recente » Rating Alin Sinpalean (alin_sinpalean) | Istoria paginii utilizator/denismoldovan | Istoria paginii utilizator/popandau | Diferente pentru runda/oni2014ziua1_11 intre reviziile 2 si 3 | Cod sursa (job #1120006)
program binar;
type
vector=array[1..100009] of integer;
var
x:integer;
n,m,i,j,k,li,ls:longint;
a:vector;
f,g:text;
b:0..2;
begin
assign(f,'cautbin.in');
reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
readln(f,m);
assign(g,'cautbin.out');
rewrite(g);
for j:=1 to m do
begin
readln(f,b,x);
li:=1;
ls:=n;
case b of
0:begin
while (li<=ls) do
begin
k:=(ls+li) div 2;
if (a[k]<=x) then li:=k+1
else ls:=k-1;
end;
k:=(ls+li) div 2;
if a[k]>x then k:=k-1;
if a[k]=x then writeln(g,k)
else writeln(g,-1);
end;
1:begin
while (li<ls) do
begin
k:=(ls+li) div 2;
if a[k]<=x then li:=k+1
else ls:=k;
end;
k:=(ls+li) div 2;
if a[k]>x then k:=k-1;
writeln(g,k);
end;
2:begin
while (li<ls) do
begin
k:=(ls+li) div 2;
if a[k]<x then li:=k+1
else ls:=k;
end;
k:=(ls+li) div 2;
if a[k]<x then k:=k+1;
writeln(g,k);
end;
end;
end;
close(f);
close(g);
end.