uses crt;
const nmax=100;
var a:array[1..nmax] of integer;
n,i:byte;
mn,mn1,x:integer;
f,g:text;
s:string;
begin
clrscr;
randomize;
assign(f,'1.txt');
rewrite(f);
{создаем массив и пишем в файл}
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln(f,'Ishodnyj massiv:');{первая строка файла}
for i:=1 to n do
begin
a[i]:=random(10000)+1;
write(f,' ',a[i]);
end;
close(f);
assign(g,'2.txt');
rewrite(g);
reset(f);
mn:=0;{начальный минимум, меньше нет}
for i:=1 to n do{сколько чисел в массиве}
begin
reset(f);{открываем}
mn1:=maxint;{текущий минимум}
readln(f,s);{пропучкаем первую строку}
while not eof(f) do{пока не конец файла}
begin
read(f,x);{читаем числа}
if (x<mn1)and(x>mn) then mn1:=x;{если меньше текущего минимума, но больше предыдущего
это новый текущий минимум}
end;
close(f);{закрываем, открываем, пропускаем строку}
reset(f);
readln(f,s);
while not eof(f) do
begin
read(f,x);
if x=mn1 then write(g,' ',x);{все равные текущему минимуму перепишем в дополнительный файл}
end;
close(f);{закроем}
mn:=mn1;{новый общий минимум}
end;
close(g);
append(f);{открываем для дозаписи}
reset(g);
writeln(f,'');{дописываем в файл отсортированный массив}
writeln(f,'Otsortirovannyj massiv:');
while not eof(g) do
begin
read(g,x);
write(f,' ',x);
end;
close(f);
close(g);
erase(g);{уничтожаем вспомогательный файл}
write('Файл отсортирован!');
readln
end.