Регистрация
Войти
Стать экспертом Правила
Информатика

Даю 55 баллов! Решите задачу:

Вася — учитель физкультуры в школе. В отличие от других учителей физкультуры, Вася не любит когда ученики выстраиваются в шеренгу по росту. Вместо этого, он требует, чтобы дети выстраивались в порядке a1, a2, ..., an, где ai — рост i-го ученика в шеренге, а n — количество учеников в шеренге. Детям сложно запомнить этот странный порядок, и сегодня они выстроились в порядке b1, b2, ..., bn, что очень расстроило Васю. Теперь Вася хочет переставить детей так, чтобы получился порядок a1, a2, ..., an. За одно действие Вася может поменять местами двух человек, стоящих подряд в шеренге. Помогите Васе — составьте последовательность обменов, приводящую к нужной Васе расстановке. Количество действий минимизировать не требуется.

Входные данные
В первой строке записано целое число n (1 ≤ n ≤ 300) — количество учеников. Во второй строке через пробел записано n целых чисел ai (1 ≤ ai ≤ 109) — какой рост должен иметь ученик на месте i. В третьей строке через пробел записано n целых чисел bi (1 ≤ bi ≤ 109) — какой рост имеет ученик на месте i в начальной расстановке. Возможно, что некоторые ученики имеют одинаковый рост. Гарантируется, что расставить детей в требуемом порядке возможно, т. е. a и b совпадают как мультимножества.

Выходные данные
В первой строке выведите целое число k (0 ≤ k ≤ 106) — количество действий. Минимизировать k не требуется, но оно не должно превосходить 106. Далее выведите k строк по два целых числа через пробел. Строка pi, pi + 1 (1 ≤ pi ≤ n - 1) означает, что Вася должен поменять местами учеников на местах pi и pi + 1.

ОТВЕТЫ
//прога на Pascal`e
var
n,i,j,f,q,k:longint;
x,y,b,a:Array[0..30000] of longint;
begin
read(n);
for i:=1 to n do read(a[i]);
for i:=1 to n do read(b[i]);
for i:=1 to n do
begin
for j:=i to n do
if a[i]=b[j] then
begin
f:=j;
break;
end;
for j:=f downto i+1 do
begin
q:=b[j];
b[j]:=b[j-1];
b[j-1]:=q;
inc(k);
x[k]:=j-1;
y[k]:=j;
end;
end;
writeln(k);
for i:=1 to k do
writeln(x[i], ,y[i]);
end.
209
Контакты
Реклама на сайте
Спрошу
О проекте
Новым пользователям
Новым экспертам