Знайдіть максимум (функції)#8765

Знайдіть максимум (функції)

1 секунда
64 мегабайти
Дуже легка

Вам дано поле, розділене на n \times m квадратних клітинок. Рядки пронумеровані від до зверху вниз, а стовпці — від до зліва направо. Ваш робот починає з клітинки .

У кожній клітинці міститься ціле число. Робот бачить лише число в тій клітинці, де він знаходиться. Він може рухатися вліво, вправо, вниз і вгору, але не знає розмірів поля.

Ваше завдання — знайти максимальне число на полі, використовуючи робота.

Вхідні дані

Перший рядок містить два цілих числа та (1 \leq n, m \leq 100) — розміри поля.

Кожен з наступних рядків містить цілих чисел a_{i1}, a_{i2}, \ldots, a_{im} (0 \leq |a_{ij}| \leq 10^9) — числа на полі.

Взаємодія

Вам потрібно реалізувати таку функцію:

integer solve()

  • Ця функція повинна повернути одне ціле число — максимальне число на полі.

Ви можете використовувати такі функції:

integer getValue()

  • Повертає ціле число у клітинці, де знаходиться робот.

boolean canMoveLeft()boolean canMoveRight()boolean canMoveUp()boolean canMoveDown()

  • Кожна з цих функцій повертає true, якщо робот може переміститися у вказаному напрямку (не виходить за межі поля), інакше — false.

void moveLeft()void moveRight()void moveUp()void moveDown()

  • Кожна з цих функцій переміщає робота на одну клітинку у відповідному напрямку.

Вихідні дані

Виведіть одне ціле число — максимальне число на полі.

Приклади

a = \begin{pmatrix} 1 & 3 & 4 \\ 8 & 1 & 5 \end{pmatrix}

Нехай n = 2, m = 3, і

Якщо робот знаходиться у клітинці , то функції canMoveLeft і canMoveUp повернуть false, а canMoveRight і canMoveDown — true. Виклик функції getValue у цій позиції поверне .

Якщо викликати функцію moveDown, робот переміститься у позицію . Тоді canMoveDown поверне false, а getValue — .

Примітка: Приклад ілюструє використання функцій, а не розв'язок задачі.

Приклад 1

Loading
Loading

Оцінювання

  1. (до 50 балів) n \leq 1;

    • Нехай — мінімальна кількість рухів, необхідна для знаходження відповіді, а — максимальна кількість рухів у всіх тестах. Ви отримаєте \max(\lfloor 50 - \sqrt{t - c} \rfloor, 0) балів.

  2. (до 50 балів) без додаткових обмежень;

    • Нехай — мінімальна кількість рухів, необхідна для знаходження відповіді, а — максимальна кількість рухів у всіх тестах. Ви отримаєте \max\left(\lfloor 50 - (1/3.0)^{(t-c)} \rfloor, 0\right) балів.