Контест Middle Типы и неопределённое поведение обновлено

Середина двух int64 без переполнения

Условие

Для каждой пары 64-битных знаковых чисел a и b выведите ⌊(a + b) / 2⌋ (округление вниз, к минус бесконечности). Сумма a + b может не поместиться в int64_t, а переполнение знакового в C++ это неопределённое поведение.

Ввод: в первой строке q (1 ≤ q ≤ 700), далее q строк a b (−2⁶³ ≤ a, b ≤ 2⁶³ − 1).

Вывод: q строк с ответами.

Пример 1

Ввод:

4
1 2
-1 -2
9223372036854775807 9223372036854775807
-9223372036854775808 -9223372036854775807

Вывод:

1
-2
9223372036854775807
-9223372036854775808

Пример 2

Ввод:

3
-3 0
5 -6
0 0

Вывод:

-2
-1
0

Как подойти

Подсказки: 2
  1. Округление вниз и округление к нулю различаются для отрицательных.
  2. Сдвиг вправо на 1 делит на 2 с округлением вниз.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.