NKTREE - Cây nhị phân tìm kiếm

Tác giả: ll931110

Ngôn ngữ: Pascal

{$MODE DELPHI}
program NKTREE;
const
  input  = '';
  maxn = 50000;
  maxv = (1 shl 31) - 1;
var
  a: array[1..maxn] of integer;
  inf,sup: integer;
  n: integer;

procedure init;
var
  f: text;
  i,x: integer;
begin
  assign(f, input);
    reset(f);

  n := 0;
  while not seekeoln(f) do
    begin
      inc(n);
      read(f, x);
      a[n] := x;
    end;

  close(f);

  inf := -maxv;
  sup := maxv;
end;

function check: boolean;
var
  i: integer;
begin
  if n = 1 then exit(true);
  if a[2] > a[1] then inf := a[1] else sup := a[1];

  for i := 3 to n do
    begin
      if (a[i] < inf) or (a[i] > sup) then exit(false);
      if a[i] < a[i - 1] then sup := a[i - 1] else inf := a[i -  1];
    end;

  check := true;
end;

begin
  init;
  if check then writeln('YES') else writeln('NO');
end.

Download