Pagini recente » Cod sursa (job #3181467) | Cod sursa (job #1069458) | Cod sursa (job #1527384) | Cod sursa (job #1527918) | Cod sursa (job #847600)
Cod sursa(job #847600)
program cautare_binara;
var f1,f2:text;
n,m,i,x:longint;
a:array [1..100001] of longint;
op:byte;
bufin,bufout:array[1..100000] of byte;
procedure search01;
var middle,poz,l,r:longint;
begin
l:=1;r:=n;
while l<=r do
begin
middle:=(l+r) div 2;
if a[middle]<=x then l:=middle+1
else r:=middle-1;
end;
if op=0 then if a[r]=x then writeln(f2,r)
else writeln(f2,-1)
else writeln(f2,r);
end;
procedure search2;
var l,r,middle:longint;
begin
l:=1;r:=n;
while l<=r do
begin
middle:=(l+r) div 2;
if a[middle]<x then l:=middle+1
else r:=middle-1;
end;
writeln(f2,l);
end;
begin
assign(f1,'cautbin.in');
reset(f1);
assign(f2,'cautbin.out');
rewrite(f2);
settextbuf(f1,bufin);
settextbuf(f2,bufout);
readln(f1,n);
for i:=1 to n do read(f1,a[i]);
readln(f1);
readln(f1,m);
for i:=1 to m do
begin
readln(f1,op,x);
if op=2 then search2
else search01;
end;
close(f1);
close(f2);
end.