Pagini recente » Cod sursa (job #723076) | Istoria paginii runda/gg1/clasament | Cod sursa (job #1172197) | Cod sursa (job #725060) | Cod sursa (job #295059)
Cod sursa(job #295059)
var f,g:Text;
j,p,n,c,x,m,i,k:longint;
a:array[1..100000]of longint;
function caut_bin(x:longint):longint;
var s,d,mij:longint;
begin
s:=1;d:=n;
while (s<=d) do
begin
mij:=s+(d-s) div 2;
if a[mij]=x then
begin d:=mij; break end
else if a[mij]>=x then d:=mij-1
else s:=mij+1;
end;
caut_bin:=d
end;
begin
assign(f,'cautbin.in');reset(f);
assign(g,'cautbin.out');rewrite(g);
readln(f,n);
{read(f,a[1]); b[1]:=1; k:=1;}
for i:=1 to n do
begin
read(f,a[i]);
{if x<>a[k] then begin k:=k+1; a[k]:=x; b[k]:=i end}
end;
{readln(f);}
readln(f,m);
for i:=1 to m do
begin
read(f,c,x);
p:=caut_bin(x);
case c of
0: if a[p]=x then
begin
j:=i;
while (j+1<=n) and (a[j+1]=x) do inc(j);
writeln(g,j);
end
else writeln(g,-1);
1:
begin
j:=i;
while (j-1>=1) and (a[j-1]=x) do inc(j);
if (a[i]=x) then writeln(g,j)
else writeln(g,j-1)
end;
{ writeln(g,b[p]); }
2:
begin
j:=i;
while (j+1>=1) and (a[j+1]=x) do inc(j);
if (a[i]=x) then writeln(g,j)
else writeln(g,j+1)
end
{if a[p]=x then writeln(g,b[p])
else writeln(g,b[p]+1)}
end;
end;
close(g);
end.