Cod sursa(job #1120055)

Utilizator VandheerManPopescu Alin VandheerMan Data 24 februarie 2014 21:21:12
Problema Cautare binara Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 1.82 kb
program binar;

type
vector=array[1..100001] of longint;
var
n,m,i,j,k,li,ls,x:longint;
a:vector;
f,g:text;
b:0..2;
begin

assign(f,'cautbin.in');
reset(f);
readln(f,n);
for i:=1 to n do read(f,a[i]);
readln(f,m);
assign(g,'cautbin.out');
rewrite(g);
for j:=1 to m do
              begin
              readln(f,b,x);
              li:=1;
              ls:=n;
              case b of
                      0:begin
                        while (li<=ls) do
                        begin
                        k:=(ls+li) div 2;
                        if (a[k]<=x) then li:=k+1
                                    else ls:=k-1;
                        end;
                        k:=(ls+li) div 2;
                        if a[k]>x then k:=k-1;
                        if a[k]=x then writeln(g,k)
                                  else writeln(g,-1);
                        end;
                       1:begin
                         while (li<ls) do
                         begin
                         k:=(ls+li) div 2;
                         if a[k]<=x then li:=k+1
                                    else ls:=k;
                         end;
                         k:=(ls+li) div 2;
                         if a[k]>x then k:=k-1;
                         writeln(g,k);
                         end;
                       2:begin
                         while (li<ls) do
                         begin
                         k:=(ls+li) div 2;
                         if a[k]<x then li:=k+1
                                    else ls:=k;
                         end;
                         k:=(ls+li) div 2;
                         if a[k]<x then k:=k+1;
                         writeln(g,k);
                         end;
              end;
end;
close(f);
close(g);
end.