Автор: | Бадерик П.М. | Ограничение времени: | 1 сек | |
Входной файл: | Стандартный вход | Ограничение памяти: | 256 Мб | |
Выходной файл: | Стандартный выход | |||
Максимальный балл: | 100 |
У Артема есть очень важный секрет. А так как Артем ещё и программист, то компьютерам свою тайну он не доверяет и хранит её в сейфе с особым замком.
Недавно Артем проговорился о том, как устроен этот сейф. Чтобы открыть замок сейфа нужен секретный ключ, ключ называется секретным так как состоит из нескольких других ключей.
Вы пришли к Артему в гости и пока он заваривает вам чай решили осмотреть его комнату. Там вы обнаружили ключницу с N ключами. Немного покрутив эти ключи, вы поняли, что каждый из них может трансформироваться в 4 формы.
Именно вам Артем до этого проговорился про устройство своего сейфа. Поэтому вы знаете, что для его открытия нужно объединить K ключей и порядке в котором это нужно сделать.
Попробуйте “чисто теоретически” понять, возможно ли этими ключами открыть сейф. И если это возможно, то как нужно скомбинировать эти ключи.
На вход программе в первой строке подаются два целых числа N, K.
Во-второй идут K целых чисел - формы ключей, которые нужно сложить, чтобы открыть сейф.
В следующих N строках перечисляются ключи, каждая строка - 4 целых числа - 4 формы, которые может принять ключ. F0, ..., F3
Выходной файл должен содержать последовательность из K различных целых чисел от 1 до N задающих номера ключей для каждого составляющего секретного ключа.
Если решения нет, выходной файл должен содержать единственное число -1.
1 ≤ N, K ≤ 12
0 ≤ Fi ≤ 128
№ | Стандартный вход | Стандартный выход |
---|---|---|
1 |
|
|
2 |
|
|
Эта задача лишь аналог задачи «Слово из кубиков» Кленин А.А.
На месте каждой составляющей секретного ключа может стоять любой из N ключей.
В худшем случае полный перебор займет N! = 12!.
Перебрать все варианты можно рекурсивным алгоритмом.
На каждый шаг рекурсии мы передаем массив bool used - какие ключи мы уже использовали и i сколько ключей мы уже подобрали.
Если i = = K печатаем ключи и завершаем работу.