Задание 16 урок 15

Дан массив длиной N (не более 100 элементов), состоящий из случайно выбранных чисел из диапазона от 0 до k, где 0≤k Найдите в этом массиве длину самого короткого фрагмента, который содержит все числа от от 0 до k.

задача 16 урок 15

program U15z_16;
  const N = 40;
type
  MyArr = array[1..N] of integer;

function findCh(a: MyArr; c,l, r: integer): boolean;
var i, j: integer;
begin
  for i := 0 to c do
  begin
    result := false;
    for j := l to r do
      if i = a[j] then
      begin
        result := true;
        break;
      end;
    if not result then
      break;
  end;
end;
              //основная программа
var a: MyArr;
    j,i, k, Left, Right, D: integer;
     min,max: integer;
begin
  writeln('chislo ot usera ot 2 do 4:');
  readln(k);
  D := 0; //начальное значение длины отрезка
  min := 0;
  max:= k;
  randomize();
  writeln('Massiv: ');
  for j := low(a) to high(a) do
    a[j] := min + random(max - min + 1);
  for j := 1 to N do
    write(a[j],' ');
  for i := k+1 to N do   //счетчик длинны искомого отрезка
    begin
    for Left := 1 to N - i do  //левый край отрезка ;
    begin
      Right := Left + i-1;    // правый край отрезка
      if findCh(a, k,Left, Right) then
        begin
          // если отрезок содержит все эл-ты
          writeln('samaya korotkay dlina ot 0 do k = ',i);
          D := i;  //все числа нашлись в первом отрезке
          break;
        end;
    end;
    if D > 0 then  //если все числа нашлись в первом отрезке
      break;
    end;
     if not findCh(a, k,Left, Right) then
       writeln('ne vse chisla ot 0 do k');
    readln
end.