ВВОД-ВЫВОД ВО ВСЕХ ЗАДАЧАХ СТАНДАРТНЫЙ, ТО ЕСТЬ С КЛАВИАТУРЫ И НА ЭКРАН! НЕ НУЖНО ИСПОЛЬЗОВАТЬ ФАЙЛОВЫЙ ВВОД-ВЫВОД! Ограничение по времени на все задачи – 0.5 сек, по памяти – 64 Mb. 01. 123-последовательность (60 баллов) Задана последовательность целых чисел a1, a2,..., an, в которой каждое число от 1 до 3 включительно. Требуется заменить в ней наименьшее количество чисел так, чтобы все числа в последовательности оказались равны между собой. Входные данные В первой строке задано целое число n (1 ≤ n ≤ 106). Вторая строка содержит последовательность a1, a2,..., an (1 ≤ ai ≤ 3). Выходные данные Выведите наименьшее количество изменений, которое надо сделать, чтобы уравнять все числа в последовательности. Пример(ы) input.txt output.txt 9 1 3 2 2 2 1 1 2 3 5 Комментарий В примере все числа, равные 1 и 3 надо заменить на 2. 02. Преобразование (60 баллов) Дана последовательность n целых чисел ai (1 ≤ n ≤ 100, 1 ≤ ai ≤ 100). Примените к ней преобразование, которое всякое число ai заменяет на 0, если существует индекс j, j < i, такой что ai = aj. Другими словами, все числа, которые встречались ранее в последовательности, если рассматривать ее в порядке слева направо, нужно заменить нулями. Входные данные Первая строка содержит число n — длину последовательности. Во второй строке содержится n чисел, разделенных пробелами. Выходные данные Выведите последовательность после преобразования. Числа разделяйте пробелами. После последнего выведенного числа не должно быть концевых пробелов. Пример(ы) input.txt output.txt 2 29 27 29 27 input.txt output.txt 14 1 3 7 6 6 2 6 1 7 1 7 5 7 1 1 3 7 6 0 2 0 0 0 0 0 5 0 0 03. Конфеты (60 баллов) На Новый Год каждый в компании из N человек получил в подарок K конфет. После продолжительной игры в фанты на конфеты выяснилось, что конфеты между участниками перераспределились. Теперь у первого игрока A1 конфет, у второго - A2, ..., у N-ого - AN. Вскоре компания решила, что было нечестно играть в фанты на конфеты, и поэтому решено было заново распределить конфеты поровну. Они это решили делать следующим образом: кто-то за 1 ход отдает свою конфету другому игроку. За один ход лишь только один человек может отдавать одну конфету. Какое наименьшее количество ходов им понадобится? Как следует проводить перераспределение? Входные данные В первой строке входного файла содержатся два натуральных числа N, K (1 <= N <= 5000; 1 <= K <= 1000). Далее во второй строке содержится последовательность неотрицательных целых чисел A1, A2, ..., AN. Числа в последовательности записаны через пробел. Гарантируется, что A1 + A2 + ... + AN = N*K. Выходные данные В выходной файл выведите искомое наименьшее количество ходов M. Гарантируется, что M <= 10000. Далее в M строках выведите описание каждого хода в виде двух целых чисел Pi, Qi (1 <= i <= M). Эта пара чисел обозначает, что игрок под номером Pi отдает конфету Qi-ому игроку. Если решений несколько, выведите любое. Пример Ввод 4 2 0 3 2 3 Вывод 2 2 1 4 1 04. Расшифровка (60 баллов) Компания Macrohard решила повысить уровень защищенности своих операционных систем, осуществляя шифрование всех сообщений, передаваемых внутри локальных сетей. Будем считать, что сообщение представляет собой строку S = s1s2...sn, состоящую исключительно из букв латинского алфавита. Шифрование производится в K фаз. На каждой фазе строка S заменяется строкой, в которой в первую очередь выписаны все буквы строки S, стоящие на местах, номера которых являются простыми числами (первый блок), а затем все остальные буквы (второй блок). Относительный порядок букв в каждом из двух блоков остается неизменным. Например, строка S = abcdefgh за первую фазу шифруется в строку S = bcegadfh. Если осуществить вторую фазу шифрования, то строка S примет вид S = ceafbgdh. Напомним, что число называется простым, если оно натуральное и имеет ровно два различных натуральных делителя. Простые числа: 2, 3, 5, 7, 11... Вам дан результат шифрования строки S после K фаз. Ваша задача произвести дешифрование строки. Входные данные В первой строке входного файла содержится натуральное число K (1 <= K <= 100), вторая строка содержит строку S, которая состоит только из букв латинского алфавита. Ее длина - натуральное число, не превосходящее 255. Выходные данные Выходной файл должен содержать дешифрованную строку S. Регистр букв является значимым и его следует сохранять. Пример Ввод Test #1 2 CEAFBGDH Test #2 1 BAAAACB Вывод Test #1 ABCDEFGH Test #2 ABACABA 05. Функция (60 баллов) В языке программирования ОГОЛ вызывать функции можно лишь из функций, которые описаны после описания той функции, которая вызывается. В частности, функция не может вызывать себя. Программист Петя спроектировал программу, которая должна быть написана на этом языке. В частности, в проекте указано, какие функции вызываются из какой функции. Для удобства Петя пронумеровал все функции числами от 1 до N. Требуется написать программу, которая определяет, в каком порядке функции должны быть описаны в программе на языке ОГОЛ. Входные данные В первой строке входного файла содержится число N (1 <= N <= 100) - количество функций, которые должны быть в программе. Далее идут N строк, причем i-я строка содержит описание функций, которые должны вызываться из i-й функции. Это описание сначала содержит число количество функций, которые вызываются из данной функции, а затем номера вызываемых функций (одна и та же функция может вызываться из одной функции несколько раз). Выходные данные Необходимо вывести в строку через пробел номера функций в том порядке, в каком они должны быть описаны в программе. Если написать такую программу на языке ОГОЛ невозможно, в выходной файл нужно поместить одно число 0. Если решений несколько, то выведите любое. Пример Ввод Пример 1 3 0 4 1 1 3 1 1 1 Пример 2 2 1 2 1 1 Вывод Пример 1 1 3 2 Пример 2 0 06. Зигзаги (60 баллов) Последовательность A1, A2, ..., AK называется зигзагом, если верны неравенства A1 < A2 > A3 < A4 > ... и т.д. или A1 > A2 < A3 > A4 < ... и дальше. Например, последовательности 1, -1, 0 и 10, 20, 9, 24, 11, 20 - зигзаги, также любые последовательности из одного или двух различных чисел тоже зигзаги. На доске написано N чисел. Ваша задача найти наименьшее количество чисел, которые надо удалить, что бы остался зигзаг и номера этих чисел в последовательности. Входные данные В первой строке входного файла записано число N (1 <= N <= 1000). Далее следует N чисел последовательность чисел, записанных на доске. Каждое из них целое, по абсолютной величине не превосходящее 10^6. Числа во входном файле разделяются пробелами и/или символами перевода строки. Выходные данные В первой строке выведите единственное число - наименьшее количество чисел, которые надо удалить, чтобы остался зигзаг. Во второй строке выведите номера этих чисел в данной последовательности. Номера разделяйте пробелами. Если решений несколько, то выведите любое из них. Пример Ввод 4 1 2 3 1 Вывод 1 3