Санкт-Петербургские Олимпиады по Информатике

Задачи международной олимпиады 1990 года

Первый тур: Игра 15
Второй тур: Картинная галерея

Задача "Игра 15"

Задана таблица размером 4x4, в каждой клетке которой, кроме двух, содержится одно из чисел от 1 до 14 (все числа разные). Оставшиеся две клетки - пустые. (Пример - таблица 1.)

Таблица 1       Таблица 2
7 3 5 14
  4 9 13
1   2 10
11 8 12 6
1 2 3 4
5 6 7 8
9 10 11 12
13 14    

Правила перемещения. Число из любой клетки может быть перемещено по горизонтали или по вертикали в любую незанятую соседнюю клетку. Клетка, в которой ранее размещалось число, становится пустой.

Цель. Необходимо с помощью указанного правила выполнить по шагам преобразование произвольной исходной таблицы в конечную таблицу 2.

Задание. Написать программу, которая:

  1. осуществляет ввод с клавиатуры исходной таблицы и вывод ее на экран (пустые клетки могут быть закодированы нулями);
  2. выполняет преобразование введенной таблицы в таблицу 2;
  3. на каждом шаге выводит на экран слева вариант таблицы до этого хода, справа - вариант таблицы после хода и указывает номер хода (1,2,3 и т. д.) так, что в конце работы программы будет показано полное число сделанных ходов;
  4. минимизирует число ходов, необходимых для решения задачи.

Задача "Картинная галерея"

В картинной галерее каждый сторож работает в течение некоторого непрерывного отрезка времени. Расписанием сторожа называется множество пар [T1(i), T2(i)] - моментов начала и конца дежурства i-го сторожа из интервала [0; EndTime].

Для заданного расписания стражи требуется:

а) проверить, в любой ли момент времени в галерее находится не менее двух сторожей. Если условие а) не выполняется, то:

б) перечислить все интервалы времени с недостаточной охраной (менее двух сторожей);

в) добавить наименьшее число сторожей с заданной, одинаковой для всех длительностью дежурства, чтобы получить правильное расписание (удовлетворяющее условию а));

г) проверить, можно ли обойтись без добавления новых сторожей, если разрешается сдвигать время дежурства каждого сторожа с сохранением времени его дежурства;

д) при положительном ответе на пункт г) составить расписание с наименьшим числом сдвигов.

Входные данные (все моменты времени задаются в целых минутах):

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

  1. ответ на пункт а) в форме да/нет;
  2. при ответе "нет" на пункт а) - список пар (k,l) - начал и концов всех малоохраняемых интервалов с указанием числа сторожей в каждом (0 или 1);
  3. число дополнительных сторожей и моменты начала и окончания дежурства каждого дополнительного сторожа;
  4. ответ на пункт г) в форме да/нет; если "да", то номера сторожей, смена которых сдвигается, и значения сдвигов;
  5. ответ на пункт д) - наименьшее число сторожей, смена которых сдвигается, их номера и значения сдвигов.

Примечание. Программа должна допускать независимое тестирование пунктов в), г), д).

Используются технологии uCoz