Ctrl K

Четыре списка, сумма ноль

Средняя
Даны четыре списка целых чисел first, second, third и fourth одинаковой длины n. Из каждого списка выбирается по одному элементу — получается четвёрка индексов (i, j, k, l). Посчитайте, сколько существует четвёрок, для которых first[i] + second[j] + third[k] + fourth[l] == 0. Четвёрки различаются индексами, а не значениями: если в списке есть повторы, каждая позиция считается отдельно. Полный перебор работает за O(n⁴) — постарайтесь уложиться в O(n²).
Пример 1
first=[3, -1], second=[0, 2], third=[-2, 1], fourth=[-1, -3] → 2

Подходят ровно две четвёрки индексов: (0, 0, 0, 0) даёт 3 + 0 + (-2) + (-1) = 0, а (0, 1, 0, 1) даёт 3 + 2 + (-2) + (-3) = 0. Остальные 14 сочетаний в ноль не складываются.

Пример 2
first=[1, 1], second=[-1, -1], third=[0, 0], fourth=[0, 0] → 16

Любой выбор даёт 1 - 1 + 0 + 0 = 0, поэтому подходят все 2 · 2 · 2 · 2 = 16 четвёрок. Одинаковые значения на разных позициях считаются разными вариантами.

Пример 3
first=[4], second=[-1], third=[2], fourth=[6] → 0

Единственная четвёрка даёт 4 - 1 + 2 + 6 = 11, а не 0.

Ограничения
  • 1 ≤ n ≤ 200
  • Все четыре списка имеют длину n
  • -2²⁸ ≤ каждый элемент ≤ 2²⁸
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСудоку без конфликтов СредняяРазложить анаграммы по группам СредняяНулевые кресты СредняяДерево по прямому и симметричному обходам СредняяДерево по симметричному и обратному обходам Средняя
загружаем Python…
Вход
first=[3, -1], second=[0, 2], third=[-2, 1], fourth=[-1, -3]
Ожидается
2

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 99 тестов на сервере, включая скрытые.