Загрузка [MathJax]/jax/output/HTML-CSS/fonts/TeX/fontdata.js

printРабочее место участника

printЗадачи

1242. Задача Тамерлана

Ограничения: время – 5s/10s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

На доске размером N × M разложено несколько монет разного номинала. В клетке может лежать не более одной монеты. Можно поставить шахматного коня на любую клетку доски, в том числе занятую монетой, и затем, делая ходы по шахматным правилам, собирать монеты на клетках. В конце путешествия конь должен вернуться на начальную клетку. За выполнение каждого хода нужно заплатить одну денежную единицу. Можно проходить по клеткам доски несколько раз и собрать не все монеты. Допустимо также круговое путешествие в 0 ходов, при котором конь не двигается с начальной клетки. Выигрыш в этой задаче определяется как разница между стоимостью собранных монет и количеством ходов, сделанных конем.
Напишите программу, вычисляющую максимальный выигрыш и последовательность ходов, которая позволит его получить.
Первая строка ввода содержит три целых числа – размеры доски N и M (4\ ≤\ N,\ M\ ≤\ 100) и количество монет K (1\ ≤\ K\ ≤\ 15). Далее следует K строк, содержащих по три целых числа – номера строки r_i (1\ ≤\ r_i\ ≤\ N) и столбца c_i (1\ ≤\ c_i\ ≤\ M) клетки, в которой находится i-я монета, и номинал монеты a_i (1≤\ a_i\ ≤\ 100).
В первой строке вывести одно целое число – максимальный выигрыш, во второй строке вывести последовательность номеров строк и столбцов клеток в порядке посещения их шахматным конем. Если существует несколько вариантов последовательности ходов с одинаковым выигрышем, то можно вывести любой из них.

Пример ввода

8 8 4
2 6 10
4 8 2
6 5 15
7 5 2

Пример вывода

19
4 6 3 4 2 6 3 8 5 7 6 5 4 6
loading