Cod sursa(job #1231985)

Utilizator vrabievictorvictor vrabie vrabievictor Data 21 septembrie 2014 20:34:37
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.61 kb
var t:array[1..100009]of longint;
n,m,i,j,p,p2,x,op:longint;
begin
assign(input,'cautbin.in');reset(input);
//assign(output,'cautbin.out');rewrite(output);
readln(n);
for i:=1 to n do read(t[i]);
p2:=1;
while (p2<=n) do p2:=p2*2;
readln(m);
for i:=1 to m do
begin
readln(op,x);
if op=2 then
begin
p:=p2;j:=n;
while (p>0) do
begin
p:=p div 2;
if (j-p>0)and(t[j-p]>=x) then j:=j-p;
end;
end else
begin
p:=p2;j:=0;
while (p>0) do
begin
p:=p div 2;
if (j+p<=n)and(t[j+p]<=x) then j:=j+p;
end;
end;
if (op=0)and(t[j]<>x) then writeln(-1) else writeln(j);
end;
close(input);close(output);
end.