Никто не знает, как сделать значительно лучше, чем квадратичные, для тесно связанной задачи 3SUM (http://en.wikipedia.org/wiki/3SUM). Я бы оценил вероятность быстрого решения вашей проблемы как маловероятную.
Задача 3SUM - найти a + b + c = 0. Пусть PYTHTRIP - это проблема нахождения ^ 2 + b ^ 2 = c ^ 2, когда входные данные являются действительными алгебраическими числами. Вот сокращение времени O (n log n) с 3SUM до PYTHTRIP. Как указывает ShreevatsaR, это не исключает возможности теоретико-числового уловки (или решения 3SUM!).
Сначала мы уменьшим 3SUM до проблемы, которую я назову 3SUM-ALT. В 3SUM-ALT мы хотим найти a + b = c, где все записи массива неотрицательны. Окончательное сокращение от 3SUM-ALT до PYTHTRIP просто берет квадратные корни.
Чтобы решить 3SUM с помощью 3SUM-ALT, сначала исключите возможность тройки, где один из a, b, c равен нулю (O (n log n)). Теперь любая удовлетворяющая тройка имеет два положительных числа и одно отрицательное или два отрицательных и одно положительное. Пусть w будет числом, в три раза превышающим абсолютное значение любого входного числа. Решите два случая 3SUM-ALT: один, где все отрицательные x отображаются на w - x, а все положительные x отображаются на 2w + x; один, где все отрицательные x отображаются на 2w - x, а все положительные x отображаются на w + x. Остальная часть доказательства проста.