Задача D. Марфа Геннадьевна и напёрстки

Автор:Г. Гренкин   Ограничение времени:1 сек
Входной файл:input.txt   Ограничение памяти:256 Мб
Выходной файл:output.txt  

Условие

Этим летом Марфа Геннадьевна побывала в Турции. Там она участвовала в усложнённой игре в напёрстки. Правила игры таковы. У ведущего есть три напёрстка, под каждым из которых находится шарик, то есть всего есть три шарика: маленький, средний и большой. Ведущий может несколько раз менять местами соседние напёрстки, после чего игроку предлагается отгадать, под каким напёрстком какой шарик находится.

Придя в гостиничный номер, Марфа Геннадьевна решила изучить эту игру. Её заинтересовал вопрос, за какое наименьшее количество перекладываний соседних напёрстков можно из одной комбинации шариков получить другую.

Напишите программу, принимающую на вход две комбинации шариков и вычисляющую, сколько раз (как минимум) нужно поменять местами соседние напёрстки, чтобы из первой комбинации получить вторую.

Формат входного файла

Первая и вторая строки входного файла содержат по 3 целых числа от 1 до 3. Число 1 означает маленький шарик, 2 — средний, 3 — большой. В каждой строке все числа различны.

Формат выходного файла

Требуется вывести в выходной файл единственное целое число — ответ в задаче.

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
1 2 3
3 2 1
3
2
2 1 3
2 1 3
0
3
3 1 2
3 2 1
1

Разбор

Всего есть 6 вариантов взаимного расположения шариков в 2-х комбинациях (шарики всегда можно перенумеровать и считать, что 1-я комбинация — 123. Удобно рассмотреть 6 случаев:

1 2 3    1 2 3    1 2 3
1 2 3    1 3 2    2 1 3


1 2 3    1 2 3    1 2 3
2 3 1    3 1 2    3 2 1

Подсчитаем количество совпадений шариков в одних и тех же напёрстках в 2-х комбинациях. Если 0 совпадений, то ответ — 2. Если 3 совпадения, то ответ — 0. Иначе, если 1 совпадение, то возможно 2 варианта:

1) Совпадение посередине (во 2-м напёрстке). Тогда ответ — 3.

2) Совпадение не посередине. Тогда ответ — 1.

var
  a, b: array[1..3] of integer;
  cnt: integer;
  res: integer;
  i, j: integer;
begin
  assign(input, 'input.txt');
  reset(input);
  assign(output, 'output.txt');
  rewrite(output);

  cnt := 0;
  for i := 1 to 3 do
  begin
    if (a[i] = b[i]) then
      inc(cnt);
  end;

  if (cnt = 0) then
    res := 2
  else if (cnt = 3) then
    res := 0
  else //cnt = 1
  begin
    if (a[2] = b[2]) then
      res := 3
    else
      res := 1;
  end;

  write(res);

  close(input);
  close(output);
end.

0.060s 0.008s 13