Матч
311, Убежать из прямоугольника (EscapeFromRectangle)
Дивизион 2,
Уровень 1
Вы находитесь в точке (x, y)
внутри прямоугольника, нижний левый угол которого имеет координаты (0, 0), а
правый верхний (w, h). Найти наименьшее расстояние, которое
Вам следует преодолеть чтобы достичь границы прямоугольника.
Класс: EscapeFromRectangle
Метод: int shortest(int x, int y, int w, int h)
Ограничения:
2 £ w, h £ 1000, 1 £ x £ w-1, 1 £ y £ h-1.
Вход. Целочисленные координаты Вашего положения (x, y) и правой верхней
вершины прямоугольника (w, h).
Выход. Наименьшее расстояние, которое следует преодолеть для
достижения границы прямоугольника.
Пример входа
x |
y |
w |
h |
1 |
1 |
5 |
5 |
653 |
375 |
1000 |
1000 |
161 |
181 |
762 |
375 |
Пример выхода
1
347
161
РЕШЕНИЕ
элементарные вычисления
Находим расстояния от точки (x, y)
до всех четырех сторон прямоугольника, которые соответственно равны x, y,
w – x, h – y. Возвращаем наименьшее из этих
значений.
ПРОГРАММА
#include <stdio.h>
class EscapeFromRectangle
{
public:
int shortest(int x, int y, int w, int h)
{
int res = x;
if(y < res) res = y;
if(w - x < res) res = w - x;
if(h - y < res) res = h - y;
return res;
}
};