Задача для автоматизированого зачета

Рассмотрим тензор (многомерную матрицу) T размерности n_1 на n_2 на ... n_k, элементами которого являются строки. Множество допустимых индексов для T обозначим через I. Заметим, что I есть подмножество N^k, где N — множество натуральных чисел. Пусть задана функция f:N->I, монотонная относительно метрики Манхэттена и удовлетворяющая условию f(0)=0. Требуется проверить, что слово, соответствующее конкатенации f(0)f(1) ... f(m), где m = n_1 + ... + n_k является... Шутка, настоящая задача ниже.

В текстовом файле записана матрица действительных чисел. Формат данных: два натуральных числа n и m, задающих соответственно число строк и столбцов матрицы, и последовательность действительных чисел, соответствующая записи матрицы по строкам. Требуется найти строчку матрицы, удовлетворяющую заданному условию (если таких несколько, то выбираем строку с минимальным номером), выполнить указанное преобразовании матрицы, и напечатать получившуюся матрицу с сохранением формата входного файла.

Варианты заданий. Номер задачи получается приписыванием номера варианта для выбора строки к номеру варианта для преобразования матрицы.

Условие выбора строки матрицы
  1. Сумма элементов строки максимальна (для других строк такая сумма не больше).
  2. Позиция (индекс) максимального элемента в строке максимальна (в других строках максимальный элемент стоит левее).
  3. Сумма элементов строки, которые по модулю превосходят первый элемент строки, максимальна (для других строк такая сумма не больше).
  4. Сумма элементов строки, которые превосходят среднее арифметическое, минимальна (для других строк такая сумма не меньше).
  5. Позиция (индекс) минимального элемента, который больше среднего арифметического элементов строки, минимальна (в других строках такой элемент стоит правее).
Преобразование строки p матрицы относительно найденной по первому условию строки k
  1. Заменить A_pi на отношение A_ki и среднее арифметическое в строке p.
  2. Заменить A_pi на скалярное произведение (A_pi, A_pi+1, ..., A_pm) и (A_ki, A_ki+1, ..., A_km).
  3. Вычислить поэлементный максимум A_pi и A_ki.
  4. Вычислить среднее A_pi и A_ki.
  5. Заменить A_pi на скалярное произведение (A_p0, A_p1, ..., A_pi) и (A_k0, A_k1, ..., A_ki).
Матрица должна быть представлена ОДНОМЕРНЫМ массивом.

Номера заданий: совпадают с первым зачетом.

Время: до 15:30.

Требования к решению: ввод-вывод матрицы должен быть отделён от её обработки, преобразование матрицы должно быть реализовано в виде отдельной функции; функция преобразования матрицы должна модифицировать матрицу, а не создавать новую; функции должны быть снабжены документацией; память для хранения матрицы A должна выделяться в минимально необходимом объёме; не должно быть утечек памяти и других ошибок valgrind; программа должна обрабатывать возможные ошибки (отсутствие файла, ошибки чтения, несоответствия формату и т.п.).

Процедура сдачи. Выкладываете своё решение в github. Директория (в вашей директории проекта) должна называться zachet2.