Cod sursa(job #290003)

Utilizator b_ady20Branescu Adrian b_ady20 Data 27 martie 2009 12:28:47
Problema Cautare binara Scor 60
Compilator fpc Status done
Runda aa Marime 0.98 kb
var nr:array[1..100001] of longint;
    n,i,op,q,p,m,x,o,stop:longint;
procedure citire;
begin
read(input,n);
for i := 1 to n do begin
read(input,nr[i]);
end;
read(input,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(output,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(output,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(output,stop);
end;
begin
assign(input,'cautbin.in');reset(input);
assign(output,'cautbin.out');rewrite(output);
citire;
for i:=1 to o do
begin
read(input,op,x);
case op of
0: poz;
1: mare;
2: mic;
end;
end;
close(input);
close(output);
end.