Матч 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, wx, hy. Возвращаем наименьшее из этих значений.

 

ПРОГРАММА

 

#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;

  }

};