      6.  .

     6.1. ⥪.

       -  ⨯. ᬮਬ (騩  ᪠-
)  ⨯ "⥪ ⮢ ⨯ ".  祭ﬨ  ᫥-
⥫쭮 祭 ⨯ .

     樨:

_ (var s: ⥪ ⮢ ⨯ ).
 (t: T; var s: ⥪ ⮢ ⨯ ).
 (var t: T; var s: ⥪ ⮢ ⨯ ).
 (s: ⥪ ⮢ ⨯ ): boolean
設 (s: ⥪ ⮢ ⨯ ): T

     ( 㥬 祭ﬨ, 騬 ᪠,   
᪠ ⨯ "⥪" .) 楤 "_"  ⥪
s  .  楤  ""  t   ᫥-
⥫쭮  s.  楤  ""  ।,  ᫨  ᫥-
⥫쭮  s ;  ࠥ   ᫥ , -
 ⠭ 祭 ६ t. ࠦ "(s)" -
⨭, ᫨ ᫥⥫쭮 s .  ࠦ  "設(s)"
।, ᫨ ᫥⥫쭮 s ,  ࠢ ᫥-
  ᫥⥫쭮 s.
       ,   ஢ ⥪  ᪠   祣 
  㦥.

     ஢ ࠭祭 ⥪  ᨢ.

     㤥 ,  ⢮ ⮢  ⥪   ॢ-
室  ண  ᫠  n.  ⥪  ஢  -
  ६:
        ঠ: array [1..n] of T;
        : integer;
,   ⥪ 室  ঠ [1],...,-
 [].

     ⮡ ᤥ ⥪ , 筮 
         := 0

       t:
         { < n}
          := +1;
         ঠ [] :=t;

        ६ t:
         t := ঠ [];
          :=  - 1;

     ⥪ , ᫨  = 0.

     設 ⥪ ࠢ ঠ [].

 ࠧ,  ६ ⨯ ⥪  ணࠬ  ᪠-
  ᯮ짮  ६ ঠ   .  
⠪ । ⨯ ⥪, ᠢ

    const N = ...
    type  stack = record
                    ঠ: array [1..N] of T;
                    : integer;
                  end;

( 塞 ᥡ  ᯮ짮    ६    ᪨
㪢,    筮  ᪠  ⮣  .) ᫥ ⮣ 
 -  ᮮ⢥⢨  ࠢ ᪠  -  ᠭ  楤
ࠡ  ⥪. ਬ,  

        procedure  (t: T; var s: stack);
        begin
        | {s. , N}
        | s. := s. + 1;
        | s.ঠ [s.] := t;
        end;

     ᯮ짮 ⥪.

     㤥 ᬠਢ ᫥⥫쭮 뢠  -
뢠 㣫   ᪮ ( ) [ ]. ।  ⠪
᫥⥫쭮⥩  뤥 ࠢ - ,   
祭  ⠪ ࠢ:

        1)  ᫥⥫쭮 ࠢ쭠.
        2) ᫨    ࠢ,    ࠢ쭠.
        3) ᫨  ࠢ쭠,  [A]  (A) ࠢ.

     ਬ. ᫥⥫쭮 (), [[]], [()[]()][]  ࠢ,
 ᫥⥫쭮 ], )(, (], ([)] - .

     6.1.1.  ஢ ࠢ쭮 ᫥⥫쭮  ६,
 ॢ室饥 ⠭, 㬭   .  ।-
,  童 ᫥⥫쭮 ஢ ᫠:
         (   1
         [   2
         )  -1
         ]  -2

     襭.  a[1]..a[n] - ஢塞 ᫥⥫쭮.
ᬮਬ  ⥪,  ⠬  ண    뢠騥
㣫   ᪮ (. . 1  2).
     砫 ⥪  .  ᬠਢ 童  -
⥫쭮  ᫥  ࠢ.  ⨢  뢠 ᪮
(㣫  ), 頥   ⥪. ⨢  뢠-
,  ஢塞,  設  ⥪ - ୠ  ᪮; ᫨
  ⠪,   ⢥ত,   ᫥⥫쭮  -
쭠,  ᫨  ᪮  ୠ,  ६  (設)  ⥪.
᫥⥫쭮 ࠢ쭠,  ᫨      ⥪  뢠
.
        _ (s);
        i := 0; 㦥_訡 := false;
        {⠭ i ᨬ ᫥⥫쭮}
        while (i < n) and not 㦥_訡 do begin
        | i := i + 1;
        | if (a[i] = 1) or (a[i] = 2) then begin
        | |  (a[i], s);
        | end else begin  {a[i] ࠢ -1  -2}
        | | if  (s) then begin
        | | | 㦥_訡 := true;
        | | end else begin
        | | |  (t, s);
        | | | 㦥 訡 := (t <> - a[i]);
        | | end;
        | end;
        end;
        ࠢ쭮 := (not 㦥_訡) and  (s);

           ࠢ쭮  ணࠬ. (1) ᫨ ᫥-
⥫쭮 ஥  ࠢ,  ணࠬ   ⢥  "".
   樥  ஥ ࠢ쭮 ᫥-
⥫쭮.   ஢  ⮩,  ᫥⥫쭮 AB
 ।,   A  B 㦥 ஢७ -    ᫥-
⥫쭮⥩ [A]  (A) -  ।,   A 㦥 ஢७.
  ⮩  祢.   AB ⢨ ணࠬ ந室 
 A     ⥪; ⥬  ந室   
B.    [A]  ᭠砫  頥   ⥪ 뢠 ⭠
᪮  ⥬     A -  ⮩ ࠧ楩,   㡨-
 ⥪   ᪮.   砭  A  ⥪  ⠭
  - ᫨   ⮩ ᪮ -  ⥬  ᮢᥬ .
筮  (A).
     (2) ,  ᫨ ணࠬ 蠥 ࠡ   ⢥⮬
"",   ᫥⥫쭮 ࠢ쭠. 㦤 樥 
 ᫥⥫쭮. ᫥  ﭨ ⥪    -
 ࠡ ணࠬ. ᫨    ஬ 
,  ᫥⥫쭮 ࠧ   ,  
    ணࠬ  ⢥ ""; ⠥ ᯮ짮
। 樨  । ࠢ쭮.   ⥪
  ६  .   ,      ࢮ
蠣 ᪮ 㤥   ᫥ 蠣.  ᠬ,   
᫥ ᨬ ᫥⥫쭮 -   ᪮,  -
⥫쭮   (A)  [A],  ࠡ ணࠬ (஬
ࢮ    ᫥  蠣) ⫨砥   ࠡ  A 
稥 譥 ᪮   ⥪ (ࠧ   뭨,  -
    ࠡ ணࠬ).  뫠  ।-
 樨  । ࠢ쭮.

     6.1.2.   ணࠬ, ᫨ ⭮,    -
⥫쭮   ⮫쪮 㣫 ᪮?

     襭.   ⮬ 砥  ⥪ ⠥   , 
 䠪᪨ 室  ⠪ ⢥ত:  ᫥⥫쭮
㣫 ᪮ ࠢ쭠 ⮣  ⮫쪮 ⮣,    -
砫쭮    १  ᫮  뢠 ᪮  ॢ室
᫠ 뢠,    ᥩ  ᫥⥫쭮    ᫠
ࠢ.

     6.1.3.     ᨢ  ⥪, -
୮ ⢮ ⮢   ࠭祭  ᨢ;
  ⢨  ⥪  믮  ६, ࠭祭-
 ⠭⮩,  饩   ⥪.

     襭. ⥪    殢 ᨢ  
:    
        ঠ[1] ... ঠ[1],
 ன  -
        ঠ[n] ... ঠ[n - 2 + 1]
(設  ⥪ ᠭ ᫥).

     6.1.4.  k ⥪  ⠬ ⨯ T, 饥  -
⢮  ⮢    ॢ室 n,  ᯮ짮
ᨢ 㬬୮  C*(n+k), 稢    ⢨
  ⥪ (஬ 砫 ⢨,   ⥪ -
) ६, ࠭祭 ன ⠭⮩.

     襭. ਬ塞 ⮤ 뢠 "뫮筮 ॠ-
".  ᯮ  ᨢ:
        ঠ: array [1..n] of T;
        騩: array [1..n] of 0..n;
        設: array [1..k] of 0..n.
     ᨢ ঠ 㤥 ࠦ  n 祥    ࠬ
1..n,      ᮤন  ⨯ T. ᨢ -
騩 ࠧ   ५, ஢ ५  i    j,  ᫨
騩[i] = j. (᫨ 騩[i] = 0, ५  i  ஢-
.) ন s- ⥪ (s  1..k)  ࠭  ⠪:  設
ࠢ ঠ[設[s]], ⠫  s- ⥪ -
  ,     ५ -   ,    .
 ⮬ (s- ⥪ ) <=> 設[s] = 0.
     ५ ࠥਨ, 室騥  設[1], ..., -
[k] ( ,   ࠢ 0)   ᥪ. -
 ,     ५筠 ࠥ, ᮤঠ-
  ᯮ㥬    祩.  砫   -
  ࠭  ६  (ࠢ⢮  = 0 -
砥,  ⮣   ⠫).   砥:


 n=8 | a | p | q | d | s | t | v | w |


 k=2  |  |  |            

ঠ = <a,p,q,d,s,t,v,w>, 騩  =  <3,0,6,0,0,2,5,4>
設 = <1, 7>,  = 8
⥪: 1-: p t q a (a-設); 2-: s v (v-設).

  procedure _ࠡ; {  ⥪ 묨}
  | var i: integer;
  begin
  | for i := 1 to k do begin
  | | 設 [i]:=0;
  | end;
  | for i := 1 to n-1 do begin
  | | 騩 [i] := i+1;
  | end;
  | :=1;
  end;

  function  _: boolean;
  begin
  |   := ( <> 0);
  end;

  procedure  (t: T; s: integer);
  | { t  s- ⥪}
  | var i: 1..n;
  begin
  | {_}
  | i := ;
  |  := 騩 [i];
  | 設 [s] :=i;
  | ঠ [i] := t;
  | 騩 [i] := 設 [s];
  end;

  function  (s: integer): boolean; {s- ⥪ }
  begin
  |  := (設 [s] = 0);
  end;

  procedure  (var t: T; s: integer);
  | {  s- ⥪  t}
  | var i: 1..n;
  | begin
  | {not  (s)}
  | i := 設 [s];
  | t := ঠ [i];
  | 設 [s] := 騩 [i];
  | 騩 [i] := ;
  |  := i;
  end;

     6.2. ।.

     祭ﬨ ⨯ "। ⮢ ⨯ T",     -
,  ᫥⥫쭮 祭 ⨯ T.  -
   ⮬,      ,   砫 ( -
 -०  ).

     樨  ।ﬨ.

        _⮩ (var x: । ⮢ ⨯ T);
         (t: T, var x: । ⮢ ⨯ T);
         (var t: T, var x: । ⮢ ⨯ T);
         (x: । ⮢ ⨯ T): boolean;
        । (x: । ⮢ ⨯ T): T.

      믮  "" 㪠   -
      ।.   "" 믮,  ᫨
। ,   ࠥ        (  㤠
࠭  )  ,    t. 祭 㭪樨 "-
।" (।  ⮩ ।)   -
 ।.
     ᪨  ⥪ - Last In First  Out  (᫥
襫  -   襫),  । - First In First Out (
襫 -  襫).

      ।  ᨢ.

     6.2.1.  樨  ।  ࠭祭  
⠪,  ⮡ ⢮ ⢨   樨 뫮 ࠭-
祭 ⠭⮩,  饩   ।.

     襭. 㤥 ࠭  ।  ᥤ  -
  ᨢ.    ।  㤥  ࠢ  뢠
᫥. ᪮  ⮬     , ᢥ୥  -
ᨢ  㦭.
      ᨢ ঠ: array [0..n-1] of T  ६
         : 0..n-1,
          : 0..n.
 ⮬ ⠬ । 
         ঠ [], ঠ [ + 1],...,
                   ঠ [ +  - 1],
  ᫮ ᬠਢ   n. (।०. ᫨
 ⮣  ६    ᫥,  ਭ騥
祭         n,   ।  
⠭  ।  n ⮢.)

     ஢ 権:

      ⮩:
         := 0;
         := 0;

      :
        { < n}
        ঠ [( + ) mod n] := ;
         :=  + 1;

      ;
        { > 0}
         := ঠ [];
         := ( + 1) mod n;
         :=  - 1;

      = ( = 0);

     । = ঠ [];

     6.2.2.  (騫 ..譨७) ਤ㬠 ᯮᮡ -
 ।    ⥪ ( 䨪஢ ᫠  -
६  ⨯ T).  ⮬ ࠡ⪠ n 権  । (-
,  । 뫠  )    ॡ  浪  n
⢨.

     襭.  ਠ:  ⥪, ⠢ 栬, ࠧ
।. (   ⥪    ⥬  -
  ண  ,    塞   । 
ࢮ  ᫥.) ᭮,   ᢮  -
    ⥪,  ஢ઠ  -  ஢થ  
 ⥪. ᫨  ⨬  ,   . ᫨
⥪,    室  砫 ।,  ,  ६  
. ᫨  ,  ।⥫쭮 ९뢠   
 ண ⥪,  冷 ( ந室  ᠬ  
४뢠   ⥪  ⥪)  ᢮   ࢮ .
 ᫮ ⢨  ⮬   ࠭祭 ⠭⮩,  -
  믮, ⠪     ।  
⢮  ⮬     ࠧ.

     6.2.3.  뢠 ,  ।  ⥪:
       殢.  ॠ
 ࠭祭 ࠧ   ᨢ ⠪, ⮡  -
 ॡ ࠭祭 ᫠ ⢨?

     6.2.4. (騫 ..譨७.)   ⮢ ⨯
T   筮 ᫮ ६ ⨯ T  楫 ⨯.  砫쭮
ﭨ   ஥ ᫮ ⮢. ⠢ ணࠬ,
᫥ ᯮ ன   ⠫    ᠬ  -
,   ᫮ 뫮     楫 ६.

     .  (1)    横᪨ ⠢,
       㣮. ᫥  ⮣,  ᤥ
⮫쪮    蠣   ⭮ ࠢ,    
. (2)  , 諨      諨? ᫨
  - ,  騩  ,  
뫮       筮  .    ⠪
⮢ .  ⮣    n 믮 横-
᪨  ᤢ    n ,  ࠧ ,  ᬮ-
,   ࠧ  १ n 蠣.

     ਬ ।.

     6.2.5.    浪  ⠭    n  -
ࠫ  ᥫ,  ࠧ    ⥫ 室
⮫쪮 ᫠ 2, 3, 5.


       襭.   । x2, x3, x5,     㤥
࠭ ,   2 (3, 5) ࠧ  ⠭, 
  ⠭. । 楤

        procedure __ (t: integer);
        begin
        | writeln (t);
        |  (2*t, x2);
        |  (3*t, x3);
        |  (5*t, x5);
        end;

 奬 ணࠬ:

  __ (1);
  k := 1; { k - ᫮ ⠭ }
  {ਠ:  ⠭    浪  ⠭ k 
  童 㦭 ⢠;  । , , ஥  
    訥 ⠭,   ⠭, ᯮ-
    饬 浪}
  while k <> n do begin
  | x := min (। (x2), । (x3), । (x5));
  | __ (x);
  | k := k+1;
  | ... x   ।,    ।;
  end;

      ਠ 믮. ᬮਬ 訩  -
⠭ ⮢ ⢠.    楫   
 ᥫ 2, 3, 5,  ⭮ ⠪ ਭ . ,
  ⠭. , x 室    । , ᫥-
⥫쭮,     (訥 ⠭,  -
 ।  ⠭). ⠢ x,      
  .
      ।  ॢ室 ᫠ ⠭ ⮢.

       易  䠬 (    
 9).

       筮 ⢮,  ண 뢠
設,  ⠪ ஥ ⢮ 㯮冷祭  設,
뢠  ॡࠬ.  ⮬ 砥 ,   ਥ-
 .  <p, q> 뢠 ॡ஬  砫 p  殬 q;
 ⠪,   室  設 p  室    設
q. 筮 設  ࠦ 窠,  ॡ - ५,
騬    砫   . ( ᮮ⢥⢨  । 
 設         ॡ;  
ॡ,   砫 ᮢ  殬.)

     6.2.6.  ⭮,  ਥ஢  痢, . . 
 設  ன     ॡࠬ.  ஬  ⮣,  
  設  室 ⮫쪮  ॡ, ᪮쪮 室. -
,    横, 室騩   ॡ
஢  ࠧ. ⠢  ᪠ ⠪ 横.

     襭.  㤥 뢠  ।  設, 
ன   設 ᮥ ॡ஬  (砫  -
   設,    砫 ।).   -
砫 । 設 㤥 墮⮬ , ᫥ - . 
㭪  ࠧ   楯 ॡ , ५  
  墮   .  設  । ᮮ⢥
   , ⨥ 設 - १ 稪 墮.
     砫  ⮨  ⢥ 設.   ᫥-
㥬 ⠪ ࠢ:

while  砥   ॡ do begin
| if   室 ᯮ짮   ॡ then begin
| | 㤫  ⨬ ॡ஬
| end else begin
| | {墮   ⮩  設,   }
| | १  墮     
| | {" 뢠  墮"}
| end;
end;

     ,   ⨣ 楫.

     1)      墮  ,  室   -
設 ⮫쪮  ࠧ, ᪮쪮 室.        設
室 ⮫쪮  ॡ, ᪮쪮 室,   
砥,   砫   ⮩  窥.
     2)   㪮稢, ⮬    墠뢠  
ॡ,  , 稭  ண , 㤥  -
 .  ஬ 砥  㤥 ᪮筮 "᪮짨  
ᥡ".   , ⮫쪮 ᫨   設   室
ᯮ짮 ॡ.  吝 ᫥,    ᯮ짮
 ॡ.

     砭    ॠ樨  ᪠. 設  㤥
 ᫠ 1..n.   設  i  㤥  ࠭  ᫮
Out[i]  室      ॡ,  ⠪  Num[i][1],...,
Num[i][Out[i]]  設, 㤠    ॡ  .    
஥    㤥  롨  ࢮ ᢮ ॡ. 
筮 㤥 ࠭   設 ᫮  室  
  ᯮ짮  ॡ  -     ॡ, 騥  砫
ᯨ᪠.

     6.2.7. ,   类  n    ᫥-
⥫쭮  㫥        (2  ⥯ n)  ᫥騬
᢮⢮: ᫨ "ᢥ   "  ᬮ    ࠣ-
    n  ( ᫮ ࠢ (2  ⥯ n)),   稬
  ᫥⥫쭮 㫥    n. -
  ᪠ ⠪  ᫥⥫쭮,  ॡ騩  
 (C  ⥯ n) ⢨  ன ⠭ C.

     . ᬮਬ , 設 ண  -
⥫쭮  㫥     (n-1). 㤥 , 
 設 x  ॡ  設 y, ᫨ x   砫,
 y - 殬 ன ᫥⥫쭮  n.   -
 設 室  室  ॡ. , 室騩  ᥬ
ॡࠬ,   ॡ㥬 ᫥⥫쭮.

     6.2.8.  k ।  ࠭祭 㬬୮ -
  n,  ᯮ    浪  n+k, 祬  
(஬ 砫쭮, 饩  । 묨)  ॡ
࠭祭 ⠭⮩ ᫠ ⢨.

     襭.  㥬 筮 뫮筮 ॠ樨 ⥪:
  (  ।) ࢮ,  童 । -
 ᫥饣   ( ᫥ ⠥,    -
 䨪⨢   ஬ 0). ஬  ⮣,      
  ।    ᫥  (᫨    )  -  
㤠 .    ⥪, ⤥쭮  楯  ᢮-
  祥. ⨬,   ⮩ । ଠ  ᫥-
    -     ᯮ   -
.

        ঠ: array [1..n] of T;
        騩: array [1..n] of 0..n;
        : array [1..n] of 0..n;
        ᫥: array [1..k] of 0..n;
         : 0..n;

  procedure _;
  | var i: integer;
  begin
  | for i := 1 to n-1 do begin
  | | 騩 [i] := i + 1;
  | end;
  |  := 1;
  | for i := 1 to k do begin
  | |  [i]:=0;
  | end;
  end;

  function _ : boolean;
  begin
  | _ :=  <> 0;
  end;

  function  (_।: integer): boolean;
  begin
  |  :=  [_।] = 0;
  end;

  procedure  (var t: T; _।: integer);
  | var : integer;
  begin
  | {not  (_।)}
  |  :=  [_।];
  | t := ঠ []
  |  [_।] := 騩 [];
  | 騩 [] := ;
  |  := ;
  end;

  procedure  (t: T; _।: integer);
  | var , : 1..n;
  begin
  | {_᢮_ }
  |  := ;  := 騩 [];
  | { ᯨ᪠ ᢮    }
  | if  (_।) then begin
  | |  [_।] := ;
  | | ᫥ [_।] := ;
  | | 騩 [] := 0;
  | | ঠ [] := t;
  | end else begin
  | |  := ᫥ [_।];
  | | {騩 [] = 0 }
  | | 騩 [] := ;
  | | 騩 [] := 0;
  | | ঠ [] := t
  | | ᫥ [_।] := ;
  | end;
  end;

  function । (_।: integer): T;
  begin
  | । := ঠ [ [_।]];
  end;

     6.2.9.       ।.

     .  -  ᨬ筠, ⮬    -
  뫪     ஭ (।  ).  ⮬ 㤮 
   䨪⨢ ,    , 
筮 ⠪   ࠧ  ᢮ 権.

      ᫥饩   ᯮ  ࠭ 設 -
㪫 㣮쭨.

     6.2.10.   ᪮  n 祪, ஭㬥஢ ᫥
ࠢ (  ࠢ  - ᭨ ). ⠢  ண-
ࠬ,  ந 㣮쭨, 騩  㪫 -
窮,    祬 C*n ⢨.

     襭. 㤥 ᮥ 窨  㪫 窥  
  㣮.    ,  ᫥ ᮥ 窠
㤥   設 㪫 窨.   設    㤥
뢠 뤥. । ᮥ塞 窠   -
  (祬?).   㣮쭨, ⨢  -
 設 "",   ᮥ塞  .  -
  ஦ 㣮쭨,  ⠥ ஢  
"㪫".



                                               [㭮]



     㤥 ࠭ 設 㣮쭨    浪 -
  ਬ  ᮢ ५.  ⮬ 뤥 設
 砫  殬 (  墮⮬) .  ᮥ-
  "" ⥯ ⮨   ᮥ塞 設 
   墮 .  ࠭  㪫⥩  ᪮쪮  
᫮.    墮⮬  墮⮬  , -
騥   墮⮬. ࠭ 㪫  墮  ⠪:

    while  ண  墮  墮   稢
    |                   墮  ("㪫") do begin
    | 모 墮  
    end

  ᯮᮡ ࠭ 㪫   .

    砭. ⢨  墮⮬  墮⮬  室 
। ,  ᢮  讬  権
  (     墮, ᤥ    
).

      砭.   ஦ : ᫨  -
  稢  墮 (..  ᥤ 設 
  אַ)  ᫨  稢  180 ࠤᮢ (⠪ -
,  ᫨  㣮쭨  㣮쭨).  ࢮ 砥
墮 ⮨ 㤠 (⮡  㪫 窥  뫮 譨
設),   ஬ 砥 - 易⥫쭮 ⠢.


     6.3. ⢠.

        -  ⨯.   ᯮᮡ ࠭
() ⢠ ⮢ ⨯ ; 롮    ।-
 ⨯ T  ஬ ॡ㥬 権.

     ⢠ ⢠ {1..n}.

     6.3.1.  ᯮ  ,  ய樮   n,   ࠭
⢠ ⢠ {1..n}.

          樨              ᫮ ⢨

                         C*n
        ஢ ਭ      C
                              C
                               
                    C*n
        ஢ઠ               C*n

     襭. ࠭ ⢮  array [1..n] of boolean.

     6.3.2.    ,    ஢ઠ   믮 
६ C.

       襭. ࠭ ⥫쭮 ⢮ ⮢.

     6.3.3.    ᫥ ࠭祭  ᫮ ⢨:

          樨             ᫮ ⢨

                         C*n
        ஢ ਭ      C
                              C
                               C*n
                    C
        ஢ઠ               C

     襭.  ⥫쭮  ࠭      -
⢠.

     6.3.4    ᫥ ࠭祭  ᫮ ⢨:

          樨             ᫮ ⢨

                         *n
        ஢ ਭ      
                              *n
                               
                    
        ஢ઠ               C

       襭.  ࠭ ,    - ᫥騩 
।騩  稭.


     ⢠ 楫 ᥫ.

      ᫥  稭 ⮢ ⢠  ࠭-
祭,   ⢮  ॢ室 n.

     6.3.5.  C*n.

          樨             ᫮ ⢨

                         C
        ᫮ ⮢               C
        ஢ ਭ      C*n
         
         ( 騩)     C
                               C*n
                    C*n
         -         C

     襭.   ⢮   ।⠢塞      ६
a:array [1..n] of integer, k: 0..n; ⢮ ᮤন k -
⮢ a[1],...,a[k];   ࠧ.    ࠭  -
 ⢠  ⥪ ( ७).

     6.3.6.  C*n.

          樨             ᫮ ⢨

                         C
        ஢              C
        ஢ ਭ      C*(log n)
                              *n
                               C*n
                    

     襭. . 襭 ।饩   ⥫ -
 a[1] < ... < a[k].  ஢થ ਭ ᯮ㥬
 .

      ᫥饩   ஢ ࠧ ᯮᮡ.

     6.3.7.  ᯮ ᠭ  ।饩  ।⠢-
 ,   設 ਥ஢ ,  -
      ॡࠬ. (設 ⠥ ᫠ 1..n.) ६
  C * (饥 ᫮ ॡ, 室    㯭  -
設).

     襭.  (㣮 襭 ᬮ    ४ᨨ.) 
num[i]  -  ᫮  ॡ,  室     i,   out[i][1],   ...,
out[i][num[i]] - 設, 㤠  ॡ.

  procedure 㯭 (i: integer);
  |   {  設, 㯭  i,  i}
  | var  X: ⢮ 1..n;
  |      P: ⢮ 1..n;
  |      q, v, w: 1..n;
  |      k: integer;
  begin
  | ...ᤥ X, P 묨;
  | writeln (i);
  | ... i  X, P;
  | {(1) P = ⢮ ⠭ 設; P ᮤন i;
  |  (2) ⠭ ⮫쪮 㯭  i 設;
  |  (3) X - ⢮ P;
  |  (4)  ⠭ 設,   室
  |      ॡ  ⠭ 設, ਭ X}
  | while X  do begin
  | | ... -  X  v;
  | | for k := 1 to num [v] do begin
  | | | w := out [v][k];
  | | | if w  ਭ P then begin
  | | | | writeln (w);
  | | | |  w  P;
  | | | |  w  X
  | | | end;
  | | end;
  | end;
  end;

     ⢮ (1)  蠥, ⠪    ந室  -
६    P. ⢠ (2): ࠧ v 뫮  X,  v
㯭,  ⮬  w  㯭. ⢮ (3) 祢. ⢮
(4):  㤠  X  v,   設, 㤠   v  
ॡ, । ⨬ ⠭.

     業  ६  ࠡ. ⨬,    X 
 㤠  , ⠪          (,
᫥⥫쭮, ᥣ ) ਭ P,   ⮫쪮
     P. ⮬ 横 while 믮  , 祬
 ࠧ,    㯭  設,    横  for  믮
⮫쪮 ࠧ, ᪮쪮  設 室 ॡ.
       X    ᯮ짮 ।⠢  ⥪  -
। (. ),  P - 㫥᪨ ᨢ.

     6.3.8.  । , ᫨ ॡ, ⮡ -
㯭 設 ⠫  ⠪ 浪: ᭠砫  -
設, ⮬  ᥤ, ⮬ ᥤ ᥤ (    ⠭-
)  ..

     .  , ᫨ ᯮ짮 ।  ਢ-
  襭:  樥  k,   -
,   ⠭  設  ﭨ    
k,   । 室  設, 㤠 ஢  k.

  ᫮  ᯮᮡ ।⠢   ࠧ࠭ 
 11 (஢)  12 (ॢ).

     6.4.  .

     6.4.1.   ,      
 樨,  ᨢ  n,  

         ࠡ
          i- 祩 ᫮ n
        㧭,    i- 祩

 ⠪  "㪠  쭮 " (  -
      ⮢).  ⢮ ⢨  
権       C*log n,   樨 "-
 ࠡ" ( ॡ   C*n ⢨).

     襭. ᯮ ਥ,   ࠧ   -
஢  ॢ. , ந  ⠬ ᨢ  
ﬨ 筮 ॢ,   設 ண ࠭ -
 ⮢ ᮮ⢥饣 ॢ. ४஢ ⮩ -
ଠ樨,  ⠪ ᫥         쭮
 ॡ 䬨᪮ ᫠ ⢨.

     6.4.2.  ਮ⭠ । -  ।,  ன 
 ,  ⠫ ᫥ (冷 饭       ࠥ
஫),    .  筮,  饭  । 㪠-
뢠 ਮ 頥 ꥪ (㤥  ਮ
楫묨 ᫠),   ⨨  ।  롨ࠥ    
訬  ਮ⮬  (   ⠪ ⮢). -
 ਮ । ⠪, ⮡ 饭  ⨥ 
ॡ 䬨᪮ ᫠ ⢨ ( ࠧ ।).

     襭.   ஢ ॢ (  -
⥫쭮  ਠ),  㤥  ࠧ  ।  ᨢ
x[1]..x[k],  ন  ⠪  ᢮⢮:  x[i]    (
訩  ਮ)  ᢮ 뭮 x[2i]  x[2i+1], ᫨ ⠪
 - , ᫥⥫쭮, 直    ᢮  -
⮬. (  ਮ ⠪ ࠭  ᨢ, ⠪ 
        ᨢ  (, ਮ).) 
  ࠭ ⮣ ᢮⢠ ᠭ  ⬥ -
஢.   㬥 ⠭ ᢮⢮ ᫥  
  .   ⠪:

    t:=   
    {ਠ:  ॢ  । ਮ⭥ ⮬,
        ᫨  ⮬ -  t}
    while t -  ७  t  ᢮  do begin
    |  t   殬
    end;

᫨  । ࠧ ࠦ, 騥  設 ॢ, ..
  ⮨ ,  ।  (஬ ࢮ) - ,  
  ⮣ ⬠ ᥭ: ⠢  , ਮ ࠦ-
 稭 ஡  砫,   ।    -
    ਮ⭮.

     砭. ਮ  ।  ⢥  ᯮ짮
  ஢  ⥪    ६ ᮢ.  ⮬
 । -   ᮡ,   ਮ ।-
 ६,   ந.
