Олимпиадный тренинг

Задача . E. Пират Сережа


Маленький пират Сережа недавно ограбил торговое судно с головоломками разных видов. Среди них ему понравилась лишь одна, самая сложная.

Головоломка представляет из себя таблицу из \(n\) строк и \(m\) столбцов, в клетках которой записаны числа от \(1\) до \(n \cdot m\) по одному разу.

Чтобы решить головоломку, нужно найти последовательность клеток таблицы, в которой любые две последовательные клетки соседние по стороне в таблице. Последовательность может иметь произвольную длину и должна посещать каждую клетку один или более раз. Для клетки со значением \(i\) обозначим за \(t_i\) позицию первого вхождения клетки с этим значением в последовательность. Последовательность решает головоломку, если \(t_1 < t_2 < \dots < t_{nm}\). Другими словами, последовательность должна в первый раз посетить клетку со значением \(x\) до клетки со значением \(x + 1\) для всех \(x\).

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

За одно действие Сережа может выбрать две произвольных клетки (не обязательно соседние по стороне) и поменять числа, записанные в них. Он хотел бы знать минимальное число действий, необходимое, чтобы сделать головоломку решаемой, но очень нетерпелив. Поэтому найдите, равняется ли минимальное число действий \(0\), \(1\), или же не менее \(2\). В случае, когда потребуется ровно \(1\) действие, найдите также количество подходящих пар клеток для обмена чисел.

Входные данные

В первой строке находятся два целых положительных числа \(n, m\) (\(1 \leq n\cdot m \leq 400\,000\)) — размеры таблицы.

В следующих \(n\) строках находятся по \(m\) целых чисел \(a_{i1}, a_{i2}, \dots, a_{im}\) (\(1 \le a_{ij} \le nm\)).

Гарантируется, что каждое число от \(1\) до \(nm\) встречается ровно один раз.

Выходные данные

Пусть \(a\) — минимальное число действий, после которых головоломка станет решаемой.

Если \(a = 0\), выведите \(0\).

Если \(a = 1\), выведите \(1\), а также количество подходящих пар клеток.

Если \(a \ge 2\), выведите \(2\).

Примечание

В первом примере из условия последовательность клеток \((1, 2), (1, 1), (1, 2), (1, 3), (2, 3), (3, 3)\), \((2, 3), (1, 3), (1, 2), (1, 1), (2, 1), (2, 2), (3, 2), (3, 1)\) решает головоломку, поэтому ответ \(0\).

Головоломка во втором примере из условия не решается, но будет решаться после любого из трех обменов клеток со значениями \((1, 5), (1, 6), (2, 6)\).

В третьем примере из условия потребуется не менее двух обменов, поэтому ответ равен \(2\).


Примеры
Входные данныеВыходные данные
1 3 3
2 1 3
6 7 4
9 8 5
0
2 2 3
1 6 4
3 2 5
1 3
3 1 6
1 6 5 4 3 2
2

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w643
Комментарий учителя