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

Задача . D. Максимизация количества нулей


Задано два массива \(a\) и \(b\), каждый состоит из \(n\) целых чисел.

Вы хотите создать новый массив \(c\) следующим образом: выбрать какое-то вещественное (то есть не обязательно целое) число \(d\), и для каждого \(i \in [1, n]\) присвоить \(c_i := d \cdot a_i + b_i\).

Ваша задача — максимизировать количество нулей в массиве \(c\). Чему равен максимально возможный ответ, если вы выберете значение \(d\) оптимально?

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

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

Вторая строка входных данных содержит \(n\) целых чисел \(a_1\), \(a_2\), ..., \(a_n\) (\(-10^9 \le a_i \le 10^9\)).

Третья строка входных данных содержит \(n\) целых чисел \(b_1\), \(b_2\), ..., \(b_n\) (\(-10^9 \le b_i \le 10^9\)).

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

Выведите одно целое число — максимальное количество нулей в массиве \(c\), если вы выберете \(d\) оптимально.

Примечание

В первом тестовом примере мы можем выбрать \(d = -2\).

Во втором тестовом примере мы можем выбрать \(d = -\frac{1}{13}\).

В третьем тестовом примере мы не можем получить ни одного нуля в массиве \(c\), какое бы значение \(d\) мы ни выбрали.

В четвертом тестовом примере мы можем выбрать \(d = 6\).


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

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

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