Cod sursa(job #720548)

Utilizator mciprianmosincat ciprian mciprian Data 22 martie 2012 18:41:04
Problema Cautare binara Scor 0
Compilator fpc Status done
Runda Arhiva educationala Marime 0.69 kb
var n,a,b,x,mij,m,y:int64; i:longint;
ok:boolean;
v:array[1..10000]of int64;
w:array[1..10000]of int64;
f,g:text;
begin
assign(f,'cautbin.in');reset(f);
assign(g,'cautbin.out');rewrite(g);
readln(f,n);
for i:=1 to n do begin
read(f,v[i]);w[v[i]]:=w[v[i]]+1;end; readln(f);
readln(f,m);
for i:=1 to m do begin
a:=1;
b:=n;
ok:=false;
readln(f,y,x);
while a<=b do begin
 mij:=(a+b+1)div 2;
 if (v[mij]=x)and(v[mij+1]>x) then begin ok:=true;break;end else
  if v[mij]<=x  then a:=mij+1
   else b:=mij-1;
end;
if y=0 then begin
if ok=true then writeln(g,mij) else
 writeln(g,'-1');end else
 if y=1 then writeln(g,mij) else
 if y=2 then writeln(g,mij-w[x]+1);end;
close(f);close(g);end.