EduBrick

Три элемента с суммой ноль

4000 мс · 256 МБ · всё или ничего

Даны три списка целых чисел AA, BB, CC длины nn. Посчитайте количество троек (x,y,z)(x, y, z), для которых Ax+By+Cz=0A_x + B_y + C_z = 0.

Разрезать пополам, как в задаче про четыре списка, здесь не выйдет: троек нечётное число. Но приём тот же - сложить в словарь суммы одной половины и перебрать вторую:

  1. посчитать все n2n^2 сумм Ax+ByA_x + B_y в словарь;
  2. для каждого CzC_z добавить к ответу количество −Cz-C_z в словаре.

Это O(n2)O(n^2) вместо O(n3)O(n^3).

Формат ввода

В первой строке - число nn (1≤n≤30001 \le n \le 3000).

В следующих nn строках - по три числа AiA_i, BiB_i, CiC_i, по модулю не превосходящих 10910^9.

Формат вывода

Выведите количество троек с нулевой суммой.

Примеры

ввод
1
0 0 0
вывод
1
ввод
1
1 1 1
вывод
0
Разбор идеи от автора задачи. Сначала попробуйте сами.
Войдите, чтобы отправлять решения.