Zad C
Wzorcówka

Wzorcówka do tego zadania była w Pascalu - tak to jest, jeśli używa się zadań wtórnie ;-)

A wyglądała tak:

program WyszukiwanieBinarne;
var tA,tN,i,n,m,p,q,r,key,rightmost,leftmost : LongInt;
    A                         : array[1..1000002] of LongInt;

begin
  Read(tA);
  for tN:= 1 to tA do
  begin
    Read(n);
    for i:=1 to n do
      Read(A[i]);
    Read(m);
    for i:=1 to m do
    begin
      Read(key);
    (* wystąpienie najbardziej z lewej *)
      p:=1;
      q:=n;
      while p<q do
      begin
        r:=(p+q) div 2;
    if A[r]<key then
      p:=r+1
    else
      q:=r;
      end;
      leftmost:=p;
    (* wystąpienie najbardziej z prawej *)
      p:=1;
      q:=n;
      while p<q do
      begin
        r:=(p+q+1) div 2;
    if A[r]>key then
      q:=r-1
    else
      p:=r;
      end;
      rightmost:=p;
    (* wypisujemy wynik *)
      if A[leftmost]<>key then
        WriteLn('0')
      else
        WriteLn(rightmost-leftmost+1);
    end;  
  end;
end.

Śmieszny język, nie?

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License