Pagini recente » Cod sursa (job #289065) | Cod sursa (job #1759109) | Cod sursa (job #660646) | Cod sursa (job #241702) | Cod sursa (job #411117)
Cod sursa(job #411117)
{DINH QUANG DAT TIN 07-10}
{CAUTBIN}
CONST
TFI='cautbin.in';
TFO='cautbin.out';
MAX=100001;
TYPE
arr1int=array[0..MAX] of longint;
VAR
fi,fo:text;
res,task,x,m,n:longint;
a:arr1int;
PROCEDURE process1;
var
l,r,mid:longint;
begin
l:=1;
r:=n;
res:=-1;
while l<=r do
begin
mid:=(l+r) div 2;
if a[mid]=x then
begin
res:=mid;
l:=mid+1;
end else r:=mid-1;
end;
writeln(fo,res);
end;
PROCEDURE process2;
var
l,r,mid:longint;
begin
l:=1;
r:=n;
while l<=r do
begin
mid:=(l+r) div 2;
if a[mid]<=x then
begin
res:=mid;
l:=mid+1;
end else r:=mid-1;
end;
writeln(fo,res);
end;
PROCEDURE process3;
var
l,r,mid:longint;
begin
l:=1;
r:=n;
while l<=r do
begin
mid:=(l+r) div 2;
if a[mid]>=x then
begin
res:=mid;
r:=mid-1;
end else l:=mid+1;
end;
writeln(fo,res);
end;
PROCEDURE input;
var
i:longint;
begin
read(fi,n);
for i:= 1 to n do read(fi,a[i]);
end;
PROCEDURE process;
var
i:longint;
begin
read(fi,m);
for i:= 1 to m do
begin
read(fi,task,x);
case task of
0:process1;
1:process2;
2:process3;
end;
end;
end;
BEGIN
assign(fi,tfi);reset(fi);
assign(fo,tfo);rewrite(fo);
input;
process;
close(fo);
close(fi);
END.