ВВОД-ВЫВОД ВО ВСЕХ ЗАДАЧАХ СТАНДАРТНЫЙ, ТО ЕСТЬ С КЛАВИАТУРЫ И

advertisement
ВВОД-ВЫВОД ВО ВСЕХ ЗАДАЧАХ СТАНДАРТНЫЙ, ТО ЕСТЬ С КЛАВИАТУРЫ И
НА ЭКРАН! НЕ НУЖНО ИСПОЛЬЗОВАТЬ ФАЙЛОВЫЙ ВВОД-ВЫВОД!
Ограничение по времени на все задачи, кроме 04 – 0.5 сек, по памяти – 64 Mb.
На задачу 04 ограничение по времени – 2 сек.
01. Треугольная полка (50 баллов)
Книжная полка имеет треугольную форму: на ее верхней полке помещается одна книга, на
второй — две, на третьей — три и т.д. (на i-ой помещается i книг).
Все книги занумерованы по полкам сверху вниз, а на одной полке — слева направо. То есть
единственная книга на верхней полке имеет номер 1, на второй полке — книги 2 и 3, а на
третьей — 4, 5 и 6.
Задан номер книги n, необходимо вывести номер полки, на которой она находится.
Входные данные
В единственной строке входных данных записано целое число n (1 ≤ n ≤ 108).
Выходные данные
Выведите номер полки, на которой находится книга с номером n.
Пример(ы)
ввод
вывод
4
3
ввод
вывод
12
5
02. Склад (50 баллов)
На склад поступило N лыж. Их длины A1, A2, ... ,AN. Требуется узнать какое наибольшее
количество комплектов на продажу можно составить, если в комплект обязательно входит 2
лыжи и сумма их длин должна быть равна строго Q.
Входные данные
В первой строке записаны натуральные числа N (1 <= N <= 10000) и Q (1 <= Q <= 2000).
Далее следует N чисел A1, A2, ..., AN (все длины - натуральные, не превосходящие 1000).
Выходные данные
Выведите единственное число - наибольшее количество комплектов на продажу, которые
возможно составить из данного набора.
Пример
Ввод
7 5
1 2 1 4 3 1 3
Вывод
2
03. Декодирование по алгоритму Хаффмана (50 баллов)
Рассмотрим алгоритм кодирования по Хаффману. Каждый символ представляется
последовательностью символов 0 и 1, причем никакая последовательность не является
началом другой. Закодированный текст представляет собой сконкатенированные
(записанные друг за другом) последовательности букв. Например, если e=001, t=01, x=000,
то text=0100100001.
Вам даны коды некоторых букв латинского алфавита, а также текст в закодированном виде.
Ваша задача — раскодировать его. Гарантируется, что текст составлен корректно.
Входные данные
Первая строка входного файла содержит единстенное число n — количество букв,
используемых в тексте. Далее в n строках находятся пары из символа и последовательности,
его кодирующей. Все символы — это строчные латинские буквы. Кодирующая
последовательность — строка из символов 0 и 1, длиной не более 30 символов. Символ и
код разделены одним пробелом. Последняя строка входных данных содержит
закодированный текст длиной не более 1000 символов.
Выходные данные
Выведите полученный после декодирования текст.
Пример(ы)
ввод
вывод
3
e 001
t 01
x 000
0100100001
text
ввод
вывод
7
a 100
h 101
t 1101
u 1111
p 1110
w 0
s 1100
01011001101110011111110
whatsup
04. Железная дорога (г. Тарасов) (50 баллов)
Студентам Железнодорожного Университета дали задание подвести некоторую статистику
движения поездов. Самый сообразительный студент Андрей вооружился расписанием
поездов, в котором указаны все поезда, проходящие мимо станции Тарасов-1 (к сожалению,
ни один поезд на этой станции не останавливается). Для каждого поезда указано два числа время начала его движения мимо станции и общее время движения мимо станции Тарасов-1
(поезда бывают очень длинными). Так как весь день Андрей занят учебой, то у него есть
только M минут свободного времени, чтобы провести их на станции. Помогите Андрею
выбрать такой момент времени, придя в который на станцию он сможет увидеть наибольшее
число поездов. Заметим, что если Андрей приходит ровно в тот момент, когда поезд
покидает станцию или уходит в тот момент, когда поезд прибывает на станцию, он успевает
увидеть поезд.
Входные данные
В первой строке входного файла записано два целых числа N и M (0<=N<=1000;
0<=M<=100000), где N- количество поездов в расписании, а M- количество свободных
минут Андрея. Далее в N строках даны описания поездов. Каждое описание - это пара чисел,
где первое число в паре - это минута, когда поезд приходит на станцию, а второе - время
движения поезда мимо станции в минутах. Каждое из чисел натуральное, не превосходящее
100000.
Выходные данные
Выведите единственное число - время в минутах, когда Андрею надо подойти к станции,
чтобы увидеть как можно больше поездов. Если решений может быть несколько, то
выведите любое из них.
Пример
Ввод
3 1
1 3
3 1
2 1
Вывод
2
05. Печатный пиар (50 баллов)
Маленькому пиар-агентству поступил заказ на изготовление крупной партии агитационных
материалов. Требуется изготовить и доставить N листовок. У агентства есть всего один
принтер, но на нем можно распечатать любую из листовок. Листовки могут быть разные,
поэтому на их распечатку может потребоваться различное время, на распечатку i-й листовки
требуется Ti минут. Сразу после того, как листовка распечатана, ее требуется доставить
адресату. В распоряжении агентства имеется неограниченное число курьеров, поэтому сразу,
как только листовка распечатана, курьер везет ее к адресату. Адресаты у листовок различны,
на доставку i-й листовки требуется Li минут. Вас наняли рассчитать минимально возможное
время, которое пройдет от начала печати до доставки последней листовки, с учетом того, что
печатать листовки можно в произвольном порядке.
Входные данные
В первой строчке входного файла записано целое число N (1 <= N <= 100). Вторая строка
содержит N целых чисел Ti (1 <= i <= N). Третья строка содержит N целых чисел Li (1 <= i
<= N). Известно, что 1 <= Ti, Li <= 1000. Числа во второй и третьей строках разделены
одним или несколькими пробелами.
Выходные данные
В выходной файл выведите единственное число - ответ на поставленную задачу.
Пример
Ввод
2
2 1
2 1
Вывод
4
06. Идентификация символов (50 баллов)
Есть ч/б монитор размером N x M пикселей. На нем могут выводиться K символов (каждый
символ характеризуется некоторым ненулевым количеством черных пикселей на экране).
Необходимо найти минимальное количество пикселей, по которым можно однозначно
восстановить символ.
Входные данные
В первой строке файла записаны числа N, M и K (1 <= N, M <= 10, 2 <= K <= 6),
разделенные пробелами. В следующих строках записаны K блоков по N строк, в каждой
строке по M цифр - описание символов. Блоки разделены пустой строкой. '1' означает, что
при выводе этого символа соответствующий пиксель черный, '0' означает, что белый.
Гарантируется, что все символы уникальны.
Выходные данные
В первую строку выведите минимальное количество пикселей, по которым можно
однозначно восстановить символ. Далее выведите N строк по M цифр: '1' означает, что
соответствующий пиксель входит в искомый набор, '0' означает, что не входит. Если
решений несколько выведите любое.
Пример
Ввод
2 4 3
0000
0001
1000
0001
1111
1001
Вывод
2
1000
1000
Download