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

Задача . F. Сумма и произведение


У вас есть массив \(a\) длины \(n\).

Ваша задача — ответить на \(q\) запросов: для заданных \(x,y\) найти количество пар \(i\) и \(j\) (\(1 \le i < j \le n\)), таких что и \(a_i + a_j = x\) и \(a_i \cdot a_j = y\).

То есть для массива \([1,3,2]\) и запросов \(x=3,y=2\) ответ \(1\):

  • \(i=1\) и \(j=2\) не удовлетворяет условию, потому что \(1 + 3 = 4\) а не \(3,\) также \(1 \cdot 3=3\) а не \(2\);
  • \(i=1\) и \(j=3\) удовлетворяет условию;
  • \(i=2\) и \(j=3\) не удовлетворяет условию, потому что \(3 + 2 = 5\) а не \(3,\) также \(3 \cdot 2=6\) а не \(2\);
Входные данные

Первая строка содержит одно целое число \(t\) (\(1\le t\le 10^4\)) — количество наборов входных данных.

Вторая строка каждого набора содержит одно целое число \(n\) (\(1 \le n \le 2\cdot 10^5\)) — длина массива \(a\).

Третья строка каждого набора содержит \(n\) целых чисел \(a_1,a_2,\dots,a_n\) (\(1 \le |a_i| \le 10^9\)) — массив \(a\).

Четвертая строка каждого набора содержит целое число \(q\) (\(1 \le q \le 2\cdot 10^5\)) — количество запросов.

Следующие \(q\) строк содержат по два числа \(x\) и \(y\) (\(1 \le |x|\le 2\cdot 10^9,1\le |y|\le 10^{18}\)) — запрос.

Гарантируется, что сумма \(n\) по всем наборам входных данных не превосходит \(2\cdot 10^5\). Также это гарантируется для суммы значений \(q\).

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

Для каждого набора выведите \(q\) чисел в одной строке — ответы на запросы.

Примечание

Для первого набора входных данных разберем каждую пару чисел из массива отдельно:

  • пара \((a_1,a_2)\): \(a_1 + a_2 = 4\) , \(a_1 \cdot a_2 = 3\)
  • пара \((a_1,a_3)\): \(a_1 + a_3 = 3\) , \(a_1 \cdot a_3 = 2\)
  • пара \((a_2,a_3)\): \(a_2 + a_3 = 5\) , \(a_2 \cdot a_3 = 6\)
Из этого видно, что для первого запроса нам подходит пара \((a_1,a_3)\), для второго \((a_2,a_3)\), а для третьего и четвертого подходящих пар нет.

Во втором наборе входных данных все комбинации пар подходят.


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

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

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