Внекоторой олимпиаде участвовало 360 человек. все работы пронумеровали натуральными числами от 1 до 360, номер каждой работы записали на титульном листе. после проверки оказалось, что порядок работ в стопке (снизу вверх) имеет необычный вид: 241, 242, 243, …, 359, 360, 121, 122, 123, …, 239, 240, 1, 2, 3, …, 119, 120. внутри каждой сотни работы по возрастанию номеров, но вот сотни переставлены местами. антону (одному из студентов, на олимпиаде) поручили упорядочить работы так, чтобы они лежали (снизу вверх) в порядке возрастания номеров: 1, 2, 3, …, 360. ему совершенно не хочется перекладывать все 360 работ, поэтому он решил, что будет делать только такие действия: возьмет непрерывный кусок из нескольких работ, перевернет, и вставит как целое на то же место. например, если бы в стопке лежало 5 работ в таком порядке: 1, 4, 3, 2, 5, то взяв и перевернув три средние работы, антон получит стопку 1, 2, 3, 4, 5. за какое наименьшее количество таких операций (одна операция это переворачивание куска работ) антон сможет сложить все работы в нужном порядке?
Program nnatovna;
uses crt;
const n=13;
var
a:array [1..n] of integer;
i,min,max,temp:integer;
begin
writeln('*** alphaues is thinking... ***');
writeln('*** OK ***');
writeln();
randomize;
writeln('Элементы массива:');
{создание и вывод массива}
for i:=1 to n do
begin
a[i]:=random(100)-50;
write (a[i]:5);
end;
{ищем номера мин и мах}
min:=1;
max:=1;
for i:=1 to n do
begin
if a[min]>a[i] then min:=i;
if a[max]<a[i] then max:=i;
end;
{меняем местами мин и мах элементы}
temp:=a[min];
a[min]:=a[max];
a[max]:=temp;
{вывод результата}
writeln();
writeln('Результат:');
for i:=1 to n do
write(a[i]:5);
end.