Найдите максимум (функции)
Дано поле размером ( n \times m ), состоящее из квадратных клеток. Строки пронумерованы от 1 до n сверху вниз, а столбцы — от 1 до m слева направо. Ваш робот начинает движение из клетки (1, 1).
На каждой клетке записано некоторое число. Робот видит только число в той клетке, где он находится. Он может перемещаться влево, вправо, вниз и вверх, но не знает размеров поля.
Ваша задача — найти максимальное число на поле, используя робота.
Протокол взаимодействия
Вам необходимо реализовать функцию:
integer solve()
эта функция должна возвращать одно целое число — максимальное число на поле.
Вы можете использовать следующие функции:
integer getValue()
возвращает число в клетке, где находится робот.
boolean canMoveLeft()
boolean canMoveRight()
boolean canMoveUp()
boolean canMoveDown()
каждая из этих функций возвращает true, если робот может переместиться в указанном направлении (не выйдет за пределы поля), иначе false.
void moveLeft()
void moveRight()
void moveUp()
void moveDown()
каждая из этих функций перемещает робота на одну клетку в указанном направлении.
Формат входных данных
Первая строка содержит два целых числа n и m (1 \leq n, m \leq 100) — размеры поля.
Каждая из следующих n строк содержит m целых чисел ( a[i1], a[i2], \ldots, a[im] ) ( (0 \leq |a[ij]| \leq 10^9) ) — числа на поле.
Формат выходных данных
Выведите одно целое число — максимальное из всех чисел на поле.
Пример:
Пусть ( n = 2 ), ( m = 3 ) и
( a = )
1 3 4
8 1 5
Если робот находится в клетке (1, 1), то функции canMoveLeft и canMoveUp вернут false, а canMoveRight и canMoveDown — true. Вызов функции getValue в этой позиции вернет 1.
Если вызвать функцию moveDown, робот переместится в позицию (2, 1). Тогда функция canMoveDown вернет false, а getValue — 8.
Обратите внимание, что пример не решает задачу, а лишь демонстрирует использование функций.
Блоки: 1. (до 50 баллов) ( n \leq 1 );
если ( c ) — минимальное количество движений, необходимых для нахождения ответа, а ( t ) — максимальное количество движений, сделанных во всех тестах, то вы получите ( \max(\lfloor 50 - \sqrt{t - c} \rfloor, 0) ) баллов;
(до 50 баллов) без дополнительных ограничений;
если ( c ) — минимальное количество движений, необходимых для нахождения ответа, а ( t ) — максимальное количество движений, сделанных во всех тестах, то вы получите ( \max(\lfloor 50 - \text{pow}(1/3.0, (t-c)) \rfloor, 0) ) баллов.