Автор: | Г. Гренкин | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 256 Мб | |
Выходной файл: | output.txt |
Этим летом Марфа Геннадьевна побывала в Турции. Там она участвовала в усложнённой игре в напёрстки. Правила игры таковы. У ведущего есть три напёрстка, под каждым из которых находится шарик, то есть всего есть три шарика: маленький, средний и большой. Ведущий может несколько раз менять местами соседние напёрстки, после чего игроку предлагается отгадать, под каким напёрстком какой шарик находится.
Придя в гостиничный номер, Марфа Геннадьевна решила изучить эту игру. Её заинтересовал вопрос, за какое наименьшее количество перекладываний соседних напёрстков можно из одной комбинации шариков получить другую.
Напишите программу, принимающую на вход две комбинации шариков и вычисляющую, сколько раз (как минимум) нужно поменять местами соседние напёрстки, чтобы из первой комбинации получить вторую.
Первая и вторая строки входного файла содержат по 3 целых числа от 1 до 3. Число 1 означает маленький шарик, 2 — средний, 3 — большой. В каждой строке все числа различны.
Требуется вывести в выходной файл единственное целое число — ответ в задаче.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
3 |
|
|
Всего есть 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.