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

Наконец пять конкурсов завершились, и перед победителем популярного телевизионного шоу заветные двери, ведущие в сокровищницу. Перед сокровищницей расположено N длинных коридоров, все коридоры и сокровищница соединены между собой M дверьми, как показано на рисунке. Игрок находится в первом коридоре. Чтобы добежать до сокровищницы, у него всего K секунд. Если он не успеет за отведенное время добежать до нее, то он ничего не получает. Отчет времени начнется, когда он выберет одну из M дверей и станет перед ней. За секунду он может либо открыть дверь и перейти в следующий коридор, либо перейти к соседней двери в том же коридоре, слева или справа от текущей. Чтобы добраться до выигрыша в 1000000$, игрок должен пройти через N дверей. Но проблема не в том, чтобы открыть эти двери – замков на них нет, а в том, что на каждой двери написано некоторое число, и сумма чисел на дверях, через которые прошел игрок, будет вычтена из его выигрыша. Естественно, игрок хочет максимизировать свой выигрыш, и в этом ему должна помочь ваша программа.
В первой строке входного файла содержится три целых числа, разделенных пробелами – количество коридоров N (1 ), количество дверей M (1\ ≤\ M\ ≤\ 50) и лимит времени игрока K (N\ ≤\ K\ ≤\ M*(N-1)+1). Далее следует N строк, в каждой строке M целых чисел в диапазоне от 1 до 1000000/N, разделенных пробелами – числа на дверях. j-е число в (i+1)-й строке входного файла соответствует числу, написанному на j-й двери в i-м коридоре.
В первой строке выходного файла вывести N целых чисел, разделенных пробелами – номера дверей в порядке их прохождения игроком. Время прохождения не должно превышать K секунд, а сумма чисел на пройденных дверях минимальна.
Пример ввода
4 5 6
250000 100000 150000 200000 200000
100000 150000 250000 100000 250000
150000 250000 100000 100000 1
250000 100000 250000 100000 100000