Есть набор векторов (массивов) одинаковой длины с неотрицательными целыми числами в качестве элементов. Я их буду записывать в виде столбцов
a матрицы, но вообще это просто массивы типа
int [] в памяти. И есть другой вектор
b, для которого надо найти столбец из набора, который будет поэлементно не превосходить вектор
b. Например, в следующей матрице слева от вертикальной черты находятся вектора набора, а справа — вектора, для которых ищется не превосходящий элемент:

Вектор

в качестве не превосходящих имеет вектора

и

, вектор

— вектора

,

,

и

, а вектор

вообще не имеет не превосходящих его векторов. Наивный алгоритм будет перебирать вектора набора один за другим и сравнивать все элементы. Это трудоёмкость линейная по количеству векторов.
Поэтому вопрос: существует ли какая-нибудь структура данных, которая бы обеспечивала проверку того, что набор не содержит не превосходящих элементов
за время быстрее, чем линейное от числа элементов? В случае наличия одного или нескольких таких элементов, надо выдать хотя бы один какой-нибудь.
-- 03.02.2026, 16:12 --Например, если бы у меня были бы просто числа, а не массивы, то я бы мог свой набор упорядочить по возрастанию (есть упорядоченные структуры данных которые обеспечивают логарифмическое добавление и удаление элементов), и мне для ответа на вопрос только надо было бы смотреть на первый элемент в таком упорядоченном списке. Но массивы с поэлементным сравниванием не имеют строгого порядка.