Ctrl K

Побитовое И отрезка поближе к цели

Сложная
Дан массив положительных чисел values и число goal. Для любого непрерывного непустого отрезка массива можно посчитать побитовое И (&) всех его элементов. Верните наименьшее возможное значение |И(отрезка) - goal| по всем отрезкам. Отрезков O(n²), но при фиксированном правом конце различных значений И немного: подумайте, почему.
Пример 1
values=[12, 10, 6, 7], goal=5 → 1

Отрезки дают значения 12, 10, 6, 7, 12 & 10 = 8, 10 & 6 = 2, 6 & 7 = 6, а также 0 и 2 для длинных отрезков. Ближе всего к 5 оказывается 6: разница 1.

Пример 2
values=[9, 9, 9], goal=20 → 11

Любой отрезок даёт 9, разница 11.

Ограничения
  • 1 ≤ len(values) ≤ 10⁵
  • 1 ≤ values[i] ≤ 10⁶
  • 0 ≤ goal ≤ 10⁷
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКуски с заданным AND и дешёвые хвосты СложнаяОкно с OR ближе всего к цели СложнаяОтрезки с точным AND СложнаяМеньшие справа СложнаяСуммы отрезков в заданной полосе Сложная
загружаем Python…
Вход
values=[12, 10, 6, 7], goal=5
Ожидается
1

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 107 тестов на сервере, включая скрытые.