Олимпиадный тренинг

Задача . B. Игра с перестановкой


Задача

Темы: реализация *1600

n детей стоят по кругу и играют в игру. Дети пронумерованы по часовой стрелке таким образом, что номера образуют перестановку a1, a2, ..., an длины n. Это последовательность целых чисел, такая, что каждое число от 1 до n встречается в ней ровно один раз.

Игра состоит из m шагов. На каждом шаге текущий ведущий на позиции i отсчитывает ai человек по часовой стрелке, начиная со следующего человека. Тот, на кого ведущий указал последним, становится новым ведущим.

Вам дана последовательность l1, l2, ..., lm — номера ведущих в начале каждого шага. Ребенок с номером l1 — первый ведущий.

Напишите программу, которая восстановит возможную перестановку a1, a2, ..., an. Если существует несколько решений, то выведите любое. Если нет решения, то выведите -1.

Входные данные

В первой строке записаны два целых числа n, m (1 ≤ n, m ≤ 100).

Во второй строке записаны m целых чисел l1, l2, ..., lm (1 ≤ li ≤ n) — номера ведущих в начале каждого шага.

Выходные данные

Выведите такую перестановку длины n a1, a2, ..., an, что номера ведущих при игре с ней будут в точности l1, l2, ..., lm. Если существует несколько решений, то выведите любое.

Если не существует перестановки, удовлетворяющей описанным условиям, выведите -1.

Примечание

Рассмотрим порядок ведущих в первом примере:

  • Ребенок 2 начинает.
  • После 2 ведущим становится 2 + a2 = 3.
  • После 3 ведущим становится 3 + a3 = 5. Так как это больше, чем 4, по кругу переходит к 1.
  • После 1 ведущим становится 1 + a1 = 4.
  • После 4 ведущим становится 4 + a4 = 8. Значит по кругу это остается 4.

Примеры
Входные данныеВыходные данные
1 4 5
2 3 1 4 4
3 1 2 4
2 3 3
3 1 2
-1

time 1000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам
 Кол-во
С++ Mingw-w645
Комментарий учителя