Участники лыжной гонки финишируют неодновременно. Известны их стартовые номера, фамилии и результат (Мин., Сек.). Составить программу, осуществляющую вывод на табло информацию о лучших 6-ти результатах (с распределением мест)  после финиша каждого из участников
Написала код. Начальству не понравилось. Заставило переписать. Переписать не могу. Помогите с самой сортировкой. Скину две программы.
Вот первая работающаяя:
program qq;
uses crt;
const
  nn = 5;
type
  trow = record
    sec, num: integer;
    fio: string;
  end;
var
  res: array [1..nn+2] of trow;
  i, j, d, n, min: integer;
  ch: char;
begin
      ClrScr;
      gotoxy(1,5) ;
      for j:=1 to 79 do Write('-'); WriteLn;
      gotoxy(3,6) ;
  Write('Введите интервал раздельного старта(сек.): ');
  gotoxy(1,7) ;
  for j:=1 to 79 do Write('-'); WriteLn;
  ReadLn(d);
  begin
   ClrScr;
  for j:=1 to 79 do Write('-'); WriteLn;
  n:=0;
  repeat
    WriteLn('Результаты');
    for j:=1 to 79 do Write('-'); WriteLn;
    WriteLn('Место| Номер | Ф.И.О.','':50-5, '| Мин.|Сек.');
    for j:=1 to 79 do Write('-'); WriteLn;
    for i:=1 to nn do with res[i] do begin
      if i<=n then
        WriteLn(i:4, ' | ', num:5, ' | ', fio, '':50-length(fio), ' | ',
          sec div 60:5, ':', sec mod 60)
      else
        WriteLn(i:4, ' | ');
    end;
    for j:=1 to 79 do Write('-'); WriteLn;
    WriteLn;
    if n<=nn then inc(n);
    with res[n] do
      repeat
        Writeln ('Мин Сек Номер Ф.И.О. (-1 - выход): ');
        Read(min); if min<0 then Exit;
        ReadLn(sec, num, fio);
        sec:=min*60+sec-num*d*(num-1);
        if sec<=0 then WriteLn('Ошибка: финиш раньше старта на ', -sec, ' секунд!');
      until (sec>0);
    for i:=n-1 downto 1 do
      if res[i+1].sec < res[i].sec then begin
        res[nn+2]:=res[i]; res[i]:=res[i+1]; res[i+1]:=res[nn+2];
        
      end;
  until  false;
end;
end;
end.
Вот вторая (та, что не работает) при запуске всё будет понятно.
program qq;
uses crt;
type
    trow = record
    min,
    sec,
    num: integer;
    fio: array [1..100] of string;
end;
var
   res: array [1..100] of trow;
   i,
   n,
   line,
   interval,
   kolichestvostart,
   min,
   sec,
   num: integer;
   fio: array [1..100] of string;
   ch: char;
{Организация процедуры}
{___________________________Начало основной программы_______________________________}
{___________________________Вывод заставки_______________________________}
    
{_________________Ввод количества результатов, выводимых таблицей________________}
begin
     ClrScr;
     gotoxy(1,2) ;
     for line:=1 to 79 do Write('='); WriteLn;
     gotoxy(22,3) ;
     Writeln('Введите количество стартующих спортсменов ');
     gotoxy(1,4) ;
     for line:=1 to 79 do Write('='); WriteLn;
     gotoxy(3,6) ;
     Writeln('Количество выводимых результатов дожно быть в промежутке от 2 до 15,');
     gotoxy(3,7);
     Writeln('Иначе таблица не поместится на экране');
     gotoxy(1,8) ;
     for line:=1 to 79 do Write('='); WriteLn;
     ReadLn(kolichestvostart);
{______________________________Ввод интервала старта_______________________________}
n:=0;
if n<=kolichestvostart then inc(n);
    with res[n] do
ClrScr;
       gotoxy(1,2) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(20,3) ;
       Write('Введите интервал раздельного старта(сек.): ');
       gotoxy(1,4) ;
       for line:=1 to 79 do Write('='); WriteLn;
       ReadLn(interval);
{______________________________Ввод стартового листа_______________________________}
ClrScr;
       gotoxy(1,2) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(3,3) ;
       Writeln('Сформируйте стартовый лист.');
       gotoxy(3,4) ;
       Writeln('Введите фамилии спортсменов по номерам.');
       gotoxy(1,5) ;
       for line:=1 to 79 do Write('='); WriteLn;
       Writeln('Номер | Имя');
       gotoxy(1,7) ;
       for line:=1 to 79 do Write('='); WriteLn;
       for num :=1 to kolichestvostart do
           Begin
       write( '  ',num,'   | ');
       readln(fio[num]);
       end;
{______________________________Стартовый лист_______________________________}
ClrScr;
       gotoxy(1,2) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(30,3) ;
       Writeln('Ваш стартовый лист');
       gotoxy(1,4) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(1,5) ;
       Writeln('Номер| Имя                                                          | Инт.(сек)');
       gotoxy(1,6) ;
       for line:=1 to 79 do Write('='); WriteLn;
       for num:=1 to kolichestvostart do
           writeln('  ',num,'  | ',fio[num],'':61-length(fio[num]),'|    +',(0-interval)+num*interval);
           gotoxy(1,6+kolichestvostart+1) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(1,7+kolichestvostart+2);
       Writeln('Нажмите Enter для продолжения');
           readln;
       end;
{___________________________Ввод результатов_______________________________}
ClrScr;
       gotoxy(1,2) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(25,3) ;
       Writeln('Введите результаты через пробел');
       gotoxy(1,4) ;
       for line:=1 to 79 do Write('='); WriteLn;
       gotoxy(1,5) ;
       Writeln('********************************************************************* Результат');
       Writeln('Номер| Имя                                                          *  Мин:Сек');
       gotoxy(1,7) ;
       for line:=1 to 79 do Write('='); WriteLn;
       for num:=1 to kolichestvostart do
       repeat
           write('  ',num,'  | ',fio[num],'':61-length(fio[num]),'|   ');
           Read(min); if min<0 then Exit;
           ReadLn(sec);
           sec:=min*60+sec-num*interval*(num-1);
           if sec<=0 then WriteLn('Ошибка: финиш раньше старта на ', -sec, ' секунд!')
       until (sec>0);
           gotoxy(1,7+kolichestvostart+1) ;
       for line:=1 to 79 do Write('-'); WriteLn;
       gotoxy(1,7+kolichestvostart+2);
       Writeln('Нажмите Enter для продолжения');
           readln;
{___________________________Вывод таблицы результатов________________________________}
      clrscr;
      WriteLn('Результаты');
      for line:=1 to 79 do Write('='); WriteLn;
      WriteLn('Место| Номер | Ф.И.О.','':50-5, '  | Мин.|Сек.');
      for line:=1 to 79 do Write('='); WriteLn;
           WriteLn( i:4, ' | ', num:5, ' | ', fio[num], '':52-length(fio[num]), ' | ',
           min, ':', sec);
      for line:=1 to 79 do Write('='); WriteLn;
end.