1. Главная
  2. Библиотека
  3. Геометрия
  4. Даны три массива целых положительных чисел , , , а такж...
Разбор задачи

Даны три массива целых положительных чисел , , , а также целое число . Найдите такие , , , что . Если подходящих троек несколько, выведите ту, для которой лексикографически минимально. Иными словами, среди подходящих троек выберите ту, у которой

  • Предмет: Геометрия
  • Автор: Кэмп
  • #Численные методы
  • #Вычислительная математика
Даны три массива целых положительных чисел , , , а также целое число . Найдите такие , , , что . Если подходящих троек несколько, выведите ту, для которой лексикографически минимально. Иными словами, среди подходящих троек выберите ту, у которой

Условие:

Даны три массива целых положительных чисел $A$, $B$, $C$, а также целое число $S$.

Найдите такие $i$, $j$, $k$, что $A_i + B_j + C_k = S$.

Если подходящих троек несколько, выведите ту, для которой $(i,j,k)$ лексикографически минимально. Иными словами, среди подходящих троек выберите ту, у которой минимально $i$, среди таких — ту, у которой минимально $j$, среди оставшихся — ту, у которой минимально $k$.

Формат ввода
Первая строка содержит одно целое число $S$ ($1 \le S \le 10^9$).

Каждая их трёх следующих строк содержит описание одного из массивов $A$, $B$, $C$ в следующем формате. Первое число задаёт длину $n$ ($1 \le n \le 15000$) соответствующего массива, а следующие $n$ чисел задают сам массив. Элементы каждого массива — целые числа от $1$ до $10^9$.

Формат вывода
Если нужной тройки не существует, выведите единственное число $-1$.

Иначе выведите три числа: $i$, $j$, $k$ (в $0$-индексации). Если возможных троек несколько, выведите лексикографически минимальную.

Решение:

Нам нужно найти такие индексы i, j, k, что A[i] + B[j] + C[k] = S, и среди множества решений выбрать тройку (i, j, k) с минимальным i, а при равном i – с минимальным j, а затем – с минимальным k.

Чтобы обеспечить требуемый лексикографический порядок, достаточно перебрать индексы i массива A в порядке от 0 до nA–1, для каждого i – перебрать j массива B от 0 до nB–1, и для фиксированных i и j найти k, для которого C[k] = S – (A[i] + B[j]). Если в массиве C значение S – (A[i] + B[j]) встречается несколько раз, нам нужен тот k, который меньше всех – то есть минимальный.
<br /...

Внутри — полный разбор, аргументация, алгоритм решения, частые ошибки и как отвечать на каверзные вопросы препода, если спросит

Попробуй решить по шагам

Попробуй один шаг и продолжи в режиме обучения или посмотри готовое решение

Для эффективного поиска лексикографически минимальной тройки индексов (i, j, k), удовлетворяющей условию A[i] + B[j] + C[k] = S, и обеспечения минимального k при фиксированных i и j, какой подход следует использовать для массива C?

Что нужно знать по теме:

Что нужно знать по теме

Алгоритм решения

Топ 3 ошибок

Что спросит препод

Выбери предмет