||🏠
||Чемпионат Урала
||Четвертьфинал ICPC
||УрКОП
||Все соревнования
||Фото
||История
||Новичкам ||
Программный комитет: Прохоров В. В. (председатель), Лукоянов Н. Ю., Петров А. С., Прохорова М. Ф.
(Предложено Всероссийской методкомиссией, доработка В. В. Прохоров)
В театре имеется N мест, пронумерованных натуральными числами от 1 до N.
К сожалению, не все приходят на спектакль вовремя и после третьего звонка некоторые зрители нередко пересаживаются на более удобные места, а опоздавшие садятся на какие-то из свободных.
В антракте один из зрителей решил все же пересесть на место, указанное в его билете. Если оно оказалось занятым, то сидевший там пересаживался согласно своему билету. Если и там кто-то уже сидел, то и этот зритель вынужден был сесть на свое место. И так далее. Поскольку в театр попали только зрители, имевшие билеты, то начавшийся в антракте процесс пересаживания в конце концов благополучно закончился.
Требуется
определить количество зрителей, которые пересаживались в антракте согласно описанной процедуре.
Формат входных данных
1-я строка содержит натуральное число N (N<1001) - количество мест в театре.
2-я строка содержит последовательность из N целых чисел, записанных через разделитель, удобный для используемого языка программирования (следует указать в комментарии, какой разделитель следует использовать), где первое число - номер места в билете у зрителя, который перед антрактом занимал место с номером 1, второе - номер места в билете у зрителя, который занимал место с номером 2, и т.д. Если какое-то место было свободно, то соответствующее число равно 0.
3-я строка содержит одно число - номер места в билете у того из зрителей, который первым решил в антракте занять свое место, начав процесс массового пересаживания.
Формат выходных данных
Одно число - количество зрителей, которые пересаживались в антракте (включая "зачинщика").
Примеры входных данных | Примеры выходных данных для приведенных входных |
10 0 2 5 3 4 0 0 0 0 0 4 |
3 |
(Автор идеи - Н. Ю. Лукоянов, текст - В. В. Прохоров)
Имеется плоская рамка, изготовленная в виде выпуклого многоугольника из металлических стержней, концы которых жестко соединены друг с другом. На каждый стержень надето по одному колечку. Сквозь колечки последовательно (при обходе рамки в порядке соединения стержней) продернули резинку, натянули ее и концы скрепили. Колечки могут скользить по стержням без трения, но конструкция соединения стержней не позволяет колечкам перемещаться с одного стержня на другой. Резинка тоже может скользить по колечкам без трения. Диаметры стержней, колечек и толщина резинки пренебрежимо малы. При любых положениях колечек резинка находится в натянутом состоянии.
Требуется
(а) определить длину резинки в положении равновесия системы;
(б) определить длину резинки в положении равновесия системы, если одно из колечек неподвижно закреплено в каком-то месте своего стержня.
Формат входных данных
1-я строка содержит натуральное число N (N<21) - количество стержней;
в последующих N строчках задаются (через разделитель, удобный для используемого языка программирования - следует указать в комментарии, какой разделитель следует использовать) координаты xi, yi ( |xi|<51, |yi|<51, i=1,:, N) точек соединения стержней при обходе рамки в порядке соединения стержней;
последняя (N+2-я) строка содержит число -1, если все колечки могут перемещаться свободно по своим стержням, в противном случае - отношение расстояния от колечка, закрепленного на стержне с концами (x1, y1) и (x2, y2), до точки (x1, y1) к длине отрезка (x1, y1)-(x2, y2) (полагаем, что может быть закреплено только колечко, надетое на стержень с концами (x1, y1), (x2, y2).
Формат выходных данных
Число - длина резинки в положении равновесия с точностью не хуже 3-х значащих цифр.
Примеры входных данных | Примеры выходных данных для приведенных входных |
3 0 0 0 1 1 0 -1 |
1.41 |
3 0 0 0 1 1 0 1 |
2 |
(Автор идеи - А.С. Петров)
Маленькая ведьма нашла замечательный рецепт приготовления средства для выведения пятен (средство ДВП) и загорелась желанием его приготовить. Не все зелья, необходимые для приготовления этого средства, оказались в бабушкиных запасах: некоторых и не было никогда, некоторые уже закончились, а некоторые остались в недостаточном количестве. Зато, как оказалось, некоторые зелья могут быть приготовлены из других и в бабушкиной колдовской книге есть соответствующие рецепты. В каждом рецепте указываются ингредиенты и описывается способ приготовления соответствующего зелья (иногда весьма нетривиальный); заметим, что один и тот же набор ингредиентов может при разных способах приготовления давать совершенно различные зелья.
Для удобства (чтобы не запутаться в таинственных названиях) ведьма пронумеровала все зелья, упоминавшиеся в книге или имеющиеся в запасах. Затем она выписала для каждого зелья из запасов, сколько бутылочек его осталось, а для каждого рецепта - сколько и каких зелий необходимо для приготовления вещества по этому рецепту и что получится в результате. Вот что у нее получилось (MхN обозначает "M бутылочек зелья номер N", вместо 1xN стоит N):
Зелье |
Запас на складе |
|
Зелье |
Ингредиенты для приготовления |
1 2 3 4 5 7 8 9 10 13 14 15 16 17 18 19 20 23 24 26 27 33 |
3 2 6 4 10 4 4 4 6 2 1 3 1 4 3 2 5 2 2 2 1 1 |
6 8 9 10 11 12 13 16 17 19 20 21 22 24 25 26 28 29 30 31 32 34 37 39 40 |
4x5, 3 2x4, 7, 3, 1, 6 3x5, 8, 7, 4 7 4, 8, 5, 3, 9 11, 6 8, 3, 9 14 6, 14 17,2 18,10 14 3, 20, 15, 3, 20, 5 10, 14, 17, 13 14, 11 14, 2x20, 11, 10, 18 13, 18, 5, 2x10, 9, 26, 15 2 23 9 15, 24, 6, 2x17, 1, 26 10, 7, 30, 1, 20, 27 30, 24, 2x19, 14, 2 33, 34, 16, 8, 37 21, 2 |
Требуется
по заданному списку зелий, необходимых для приготовления ДВП, определить, сможет ли маленькая ведьма с помощью бабушкиных запасов и колдовской книги приготовить все эти ингредиенты в достаточных количествах. Если это возможно, то требуется также определить, какие именно зелья и в каком порядке придется для этого готовить. Если существует несколько решений, то следует выбрать из них любое, для которого количество приготовлявшихся зелий будет наименьшим.
Формат входных данных
В строку - последовательность номеров необходимых зелий через разделитель, удобный для используемого языка (номер повторяется в списке столько раз, сколько бутылочек этого зелья необходимо).
Формат выходных данных
Если задача разрешима, то должна быть выдана строка
ДВП приготовить можно
и, если необходимо, далее в той же строке - последовательность зелий, которые надо готовить (через пробел в порядке приготовления). В противном случае должно быть выдано
Приготовить ДВП не получится
Пример входных данных | Пример выходных данных для приведенных входных |
1 40 | ДВП приготовить можно 21 40 |
(Автор идеи - А. С. Петров, автор фабулы - В. В. Прохоров)
В пустое интернет-кафе, предоставляющее L компьютеров, зашла компания из N человек. Каждому из них необходимо лично отправить определенное количество электронных писем: 1-му - n1 писем, 2-му - n2, 3-му - n3 и т.д. Процедура отправки любого из имеющихся электронных писем на любом из компьютеров интернет-кафе занимает ровно одну минуту. Компании хотелось бы потратить на все как можно меньше времени.
Требуется
для заданных L, N и ni (i=1,:,N) определить минимальное время, через которое компания, отправив все сообщения, сможет пойти дальше.
Формат входных данных
1-я строка содержит натуральное число L (L<51).
2-я строка содержит натуральное число N (N<101).
3-я строка содержит последовательность из N целых чисел ni (ni<51, i=1,:,N), записанных через разделитель, удобный для используемого языка программирования.
Формат выходных данных
Одно число - минимальное время в минутах, за которое компания может отправить все сообщения.
Примеры входных данных | Примеры выходных данных для приведенных входных |
2 3 2 2 2 |
3 |
2 3 1 0 4 |
4 |
(предложено Всероссийской методкомиссией)
В улье в поисках нужной соты ползает пчела. Соты представляют собой шестиугольники и пчела может переползать из одной соты в соседнюю с ней вдоль заданных осей координат Ox, Oy или Oz. После того, как пчела оказалась в нужной ей соте, она должна возвратиться в исходную соту по пути, содержащем по возможности наименьшее количество промежуточных сот (будем называть его условно "кратчайшим").
Путь пчелы задается в виде последовательности пар следующего вида: сначала записывается буква (x, y или z), определяющая направление движения, затем - целое число задающее, на сколько сот пчела перемещается в этом направлении.
Требуется
Написать программу, которая по заданному пути пчелы из начальной соты в конечную вычисляет по возможности "кратчайший" обратный путь.
Формат входных данных
В 1-й строке задается целое число N (N<=32000) - количество звеньев пути пчелы из начальной соты в конечную.
В последующих N строках содержатся описания звеньев пути пчелы из начальной соты в конечную в порядке ее перемещения. В каждой строке сначала идет буква (x, y или z), определяющая направление движения. А затем - целое число K, задающее, на сколько сот пчела перемещается в этом направлении. Буква и число разделяются ровно одним пробелом.
Формат выходных данных
Описание обратного пути пчелы следует выдать в том же формате, который используется во входных данных.
Примеры входных данных | Примеры выходных данных для приведенных входных |
4 z-2 y3 z3 x-1 |
2 y-2 x+2 |
(Автор идеи - А. С. Петров)
Как известно, панды - очень милые и общительные животные. Опять же, как известно, разговаривать они не умеют. Поэтому они общаются с помощью табличек. Когда необходимо сообщить какую-то фразу, панда показывает одну или несколько табличек в ряд (по одной в лапе) так, чтобы в целом строки на этих табличках составили необходимую фразу.
Требуется
определить, может ли панда составить некоторую фразу, если у нее есть следующий набор табличек (по 1 штуке каждого вида):
"а", "ал", "амб", "ан", "ас", "ау", "б", "бамбук", "бе", "бед", "в", "вг", "вид", "вы", "го", "д", "дми", "дн", "е", "ел", "еп", "ертю", "ес", "ет", "з", "зан", "и", "иб", "ивы", "из", "ии", "има", "ин", "иц", "к", "кон", "ку", "л", "ли", "м", "н", "на", "нао", "нар", "не", "нею", "но", "ный", "ня", "о", "ов", "ог", "ол", "оп", "ор", "п", "пог", "под", "пять", "р", "ркестр", "рус", "с", "се", "ск", "сл", "стр", "стьд", "то", "торо", "тос", "тр", "трел", "тс", "тся", "тупа", "ть", "у", "уб", "укб", "ушки", "х", "цены", "ч", "что", "ы", "ый", "ь", "ю", "я", "ят"
и, в случае положительного ответа, указывает, как это сделать, используя минимальное количество табличек.
Формат входных данных
1-я строка содержит одно число - количество лап у панды (<=10),
2-я строка содержит фразу, которую необходимо составить. Это одна строчка, состоящая из маленьких русских букв без пробелов и знаков препинания (панды не знают, что это такое).
Формат выходных данных
Если фразу составить можно, то
в 1-й строке - последовательность текстов на табличках через пробел в том порядке, в котором они составляют заданную фразу,
во 2-й строке - количество табличек, использованных при составлении фразы.
Если составление фразы невозможно, то следует вывести одно слово - "невозможно".
Примеры входных данных |
Примеры выходных данных для приведенных входных |
10 чтосегоднянаобед |
что се го д ня нао бед 7 |
10 опятьбамбук |
о пять бамбук 3 |
10 чашечкукофепожалуйста |
невозможно |