Олимпиадный тренинг

Задача . B. Два стола


Задача

Темы: Перебор *1300

Рассмотрим прямоугольную комнату, стороны которой параллельны осям координат, с шириной \(W\) и высотой \(H\), левым нижним углом в точке \((0, 0)\) и правым верхним углом в точке \((W, H)\).

В этой комнате стоит прямоугольный стол. Стороны стола параллельны сторонам комнаты, левый нижний угол стола находится в точке \((x_1, y_1)\), а правый верхний — в точке \((x_2, y_2)\).

Вы хотите поставить в эту комнату еще один прямоугольный стол с шириной \(w\) и высотой \(h\) так, чтобы сторона, соответствующая ширине стола, была параллельна стороне комнаты, соответствующей ее ширине.

К сожалению, иногда невозможно поставить новый стол так, чтобы он не имел общую площадь с уже стоящим в комнате столом (столы могут касаться, но не должны иметь общей площади).

Вы не можете поворачивать столы, но вы можете перемещать первый стол внутри комнаты.

Пример перемещения первого стола в комнате.

На какое минимальное расстояние нужно сдвинуть первый стол так, чтобы в комнату можно было поставить второй стол?

Входные данные

В первой строке задано одно целое число \(t\) (\(1 \le t \le 5000\)) — количество наборов входных данных.

В первой строке набора входных данных заданы два целых числа \(W\) и \(H\) (\(1 \le W, H \le 10^8\)) — ширина и высота комнаты.

Во второй строке набора входных данных заданы четыре целых числа \(x_1\), \(y_1\), \(x_2\) и \(y_2\) (\(0 \le x_1 < x_2 \le W\); \(0 \le y_1 < y_2 \le H\)) — координаты углов первого стола.

В третьей строке набора входных данных заданы два целых числа \(w\) и \(h\) (\(1 \le w \le W\); \(1 \le h \le H\)) — ширина и высота второго стола.

Выходные данные

Для каждого набора входных данных выведите минимальное расстояние, на которое нужно передвинуть первый стол, или \(-1\), если в любом случае не получится поставить в комнату второй стол.

Ваш ответ будет засчитан как правильный, если его абсолютная или относительная ошибка относительно правильного ответа не превосходит \(10^{-6}\).

Примечание

Стартовая конфигурация первого набора входных данных примера показана на картинке, но перемещение не является оптимальным. Оптимально будет, например, сместить первый стол на вектор \((0, -1)\), чтобы левый нижний угол сместился с \((2, 1)\) на \((2, 0)\). Тогда второй стол можно поставить по координатам \((0, 3)-(4, 5)\).

Во втором наборе входных данных невозможно поставить второй стол в комнату, как бы мы ни перемещали первый.

В третьем наборе входных данных можно сместить стол на вектор \((0, 2)\), чтобы левый нижний угол переместился из \((0, 3)\) в \((0, 5)\).


Примеры
Входные данныеВыходные данные
1 5
8 5
2 1 7 4
4 2
5 4
2 2 5 4
3 3
1 8
0 3 1 6
1 5
8 1
3 0 6 1
5 1
8 10
4 5 7 8
8 5
1.000000000
-1
2.000000000
2.000000000
0.000000000

time 2000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя