Ну если в такой формулировке еще как то понятно. Но все же хотелось бы понять, что сделал Потопахин.
Построчно я понял это так:

mas:ARRAY 100 OF INTEGER;Определяем длину массива в 100 целых чисел
k, N, max:INTEGER;Задаем переменные
BEGIN
In.Open;Открываем входящий поток
N:=-1;Дальше вычитал, что N в этой задаче является верхней границей индекса элементов массива, зачем то задаем ей значение -1  ??
WHILE in.Done DOЕсли данные из входного потока получены, делаем
N:=N+1;Теперь задаем ей значение 0 ???
In.Int(mas[N]);Берем из входящего потока значение N от массива ??
END;
N:=N-1;Тут же снова отнимаем единицу ??
k:=k+1;Тут появляется k, которое на каждом шаге цикла будет присваивать +1
max:=mas[0];Задаем max значение элемента с индексом 0
WHILE k<=N DOНо ведь N уже меньше k, потому что к этому моменту имеет значение "-1" ???
IF mas[k]>max THEN
max:=mas[k];
END;
END;
k:=k+1;
END;
StdLog.Int(max);


Я совсем уже запутался