Cod sursa(job #290023)

Utilizator b_ady20Branescu Adrian b_ady20 Data 27 martie 2009 12:36:38
Problema Cautare binara Scor 60
Compilator fpc Status done
Runda aa Marime 0.92 kb
var nr:array[1..100001] of longint;
    n,i,op,q,p,m,x,o,stop:longint;
    f,g:text;
procedure citire;
begin
read(f,n);
for i := 1 to n do begin
read(f,nr[i]);
end;
read(f,o);
end;
procedure mic;
begin
p:=1; q:=n;
while p<=q do begin
m:=p+(q-p) div 2;
if nr[m]>=x then begin
stop:=m;
q:=m-1;
end
else p:=m+1;
end;
writeln(g,stop);
end;
procedure poz;
begin
p:=1;
q:=n;
stop:=-1;
while p<=q do begin
m:=p+(q-p) div 2;
if nr[m]=x then
begin stop:=m; p:=m+1;
end else if nr[m]<x then p:=m+1
else q:=m-1;
end;
writeln(g,stop);
end;
procedure mare;
begin
p:=1; q:=n;
while p<=q do begin
m:=p+(q-p) div 2;
if nr[m]<=x then begin
stop:=m;
p:=m+1; end
else q:=m-1; end;
writeln(g,stop);
end;
begin
assign(f,'cautbin.in');reset(f);
assign(g,'cautbin.out');rewrite(g);
citire;
for i:=1 to o do begin read(f,op,x);
case op of
0: poz;
1: mare;
2: mic;
end;
end;
close(f); close(g);
end.