Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 8 Мб | |
Выходной файл: | output.txt |
Рассмотрим все различные строки, которые могут быть получены путем циклического сдвига некоторой заданной строки S. Отсортировав их в лексикографическом порядке, сформируем из них упорядоченную последовательность.
Требуется определить номер строки S в полученной последовательности. При этом полагается, что элементы такой последовательности нумеруются с нуля.
В заголовке входного файла "input.txt" содержится единственная строка S, состоящая из цифр и строчных букв латинского алфавита.
Выходной файл "output.txt" должен содержать порядковый номер исходной строки.
0 < |S| ≤ 2 ⋅ 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
Пусть имеется набор из n точек, расположенных на поверхности цилиндра. Каждая i-я точка задается своими цилиндрическими координатами: (zi, φi), где zi направлена вдоль вертикальной оси цилиндра, φi — полярный угол, указанный в радианах.
Требуется найти геодезическое расстояние между ближайшей парой таких точек, если известно, что радиус цилиндра равен 1.
Во входном файле "input.txt" записано натуральное число n, за которым следует ровно n пар вещественных чисел (zi, φi), отвечающих за координаты исходных точек.
Выходной файл "output.txt" должен содержать ответ, записанный с точностью до 5-го знака после запятой.
− 10 < zi < 10, 0 ≤ φi < 2 ⋅ π,
2 ≤ n ≤ 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
При проведении конкурса творческих работ возникла необходимость в разработке онлайн-системы подсчета голосов.
На вход такой системе поступают запросы о начислении баллов (или штрафов) отдельным участникам соревнований. После каждого такого запроса требуется выводить текущую информацию о первых трех (призовых) местах в командном зачете.
Полагается, что изначально всем участникам присваивается ноль баллов. Далее за каждый отданный голос участнику начисляется по одному дополнительному баллу.
За нарушение правил могут начисляться штрафы (отрицательные баллы), размер которых по абсолютной величине никогда не превосходит числа имеющихся баллов.
При формировании рейтинга среди участников, имеющих равное количество баллов, на переднее место перемещается тот, за кого проголосовали в последнюю очередь.
Участники с нулевыми баллами в рейтинговой таблице не учитываются. В этом случае допускается существование меньшего числа призовых мест (от нуля до трех).
В начале входного файла "input.txt" указано общее число участников n и количество поступающих запросов m.
Далее следует ровно m таких запросов, представленных в виде пар целых чисел: ai — номер участника; bi — начисленные баллы/штрафы.
При этом полагается, что нумерация участников начинается с нуля.
Выходной файл "output.txt" должен содержать результаты выполнения каждого отдельного запроса, записанные в следующем виде.
Вначале указывается число доступных призовых мест (не более трех).
Далее записываются номера соответствующих им участников.
0 < n ≤ 105, 0 < |bi| ≤ 1000, 0 < m ≤ 2 ⋅ 105.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 8 Мб | |
Выходной файл: | output.txt |
Начинающий программист Вася занимается разработкой системы, отвечающей за анимацию подвижных частиц.
Известно, что каждая такая частица должна двигаться вдоль ломаной линии, которая в моменты времени ti проходит через установленные точки с координатами: (xi, yi), где i = 0, 1, …, (n − 1). При этом полагается, что на каждом интервале [ti, ti + 1] скорость частицы остается неизменной. В свою очередь, информация о положениях частицы в моменты времени ti в дальнейшем может уточняться.
Помимо всего прочего ему также требуется эффективным образом обрабатывать запросы следующих видов:
mov i x y — обновить координаты положения частицы в момент времени ti;
get a b — вернуть расстояние, пройденное частицей за время [a, b].
Поскольку Вася еще недостаточно опытен в решении подобных задач, он обратился за помощью к Вам.
В начале входного файла "input.txt" записано натуральное n, за которым следует ровно 3 × n вещественных чисел (ti, xi, yi), определяющих изначальную траекторию. Далее идет натуральное m, за которым следует ровно m запросов.
Выходной файл "output.txt" должен содержать результаты выполнения каждого из get-запросов, указанные с точностью до 5-го знака после запятой.
ti < ti + 1 ≤ 10, 2 ≤ n ≤ 105, 0 < m ≤ 104
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 2 Мб | |
Выходной файл: | output.txt |
Карта лабиринта, выступающего в качестве игрового поля, представлена в виде матрицы n × m клеток. Каждая клетка маркируется одним из двух значений: свободное пространство либо непроходимый участок. Полагается, что в процессе игры персонаж может передвигаться в одном из четырех направлений: вверх, вниз, вправо и влево, всегда при этом оставаясь в свободных клетках.
В лабиринте также могут встречаться закрытые комнаты, переходы между которыми остаются для персонажа недоступными. Иначе говоря, находясь в одной из таких комнат, персонаж не сможет переместиться в любую другую стандартным для него способом.
Для некоторого заданного лабиринта требуется определить общее число закрытых комнат.
Во входном файле "input.txt" построчно хранится двумерный массив символов, представляющий собой карту лабиринта. Свободные клетки в нем обозначаются пробелами (ASCII 32), в то время как все остальные выступают в качестве непроходимых участков.
Выходной файл "output.txt" должен содержать полученное число комнат.
0 < (n, m) ≤ 5000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
Частотный словарь представляет собой список слов некоторого выбранного языка, каждому из которых ставится в соответствие частота его встречаемости в исходном наборе текстов.
Пусть имеется последовательность слов, состоящих из цифр и букв латинского алфавита. При этом полагается, что регистр их написания неважен (заглавные и строчные символы эквивалентны между собой). Все прочие символы, включая пробелы и знаки препинания, играют роль разделителей.
Требуется составить частотный словарь на основе имеющегося текста, определив число вхождений каждого встречаемого в нем слова.
При решении задачи рекомендуется использовать двоичные деревья поиска, списки с пропусками либо хеш-таблицы.
Во входном файле "input.txt" содержится исходная последовательность из слов и разделительных символов.
Выходной файл "output.txt" должен содержать все найденные слова (без повторений), приведенные к одному регистру и расположенные в лексикографическом порядке. Напротив каждого такого слова (через пробел) указывается число его вхождений во входной файл.
Если результирующий словарь оказался пустым, в выходной файл выводится единственный символ пробела.
Полагается, что длина отдельно взятого слова составляет не более 10 символов.
Число уникальных слов, формирующих словарь, не превосходит 5 ⋅ 104.
Размер входного файла не превосходит 10 МБ.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 8 Мб | |
Выходной файл: | output.txt |
Оперативная память компьютера может быть представлена в виде массива байт, где адрес каждого байта определяется его позицией относительно начала такого массива. В процессе своей работы различные программы могут запрашивать отдельные участки (блоки) памяти, которые должны выделяться и освобождаться по мере необходимости.
Требуется написать менеджер памяти, который хранит информацию о всех доступных блоках и отвечает за обработку запросов следующего вида.
Запрос на выделение памяти
Вначале выбирается свободный блок наименьшего размера, который может уместить запрашиваемый объем данных. Если таких блоков несколько, среди них выбирается блок с наименьшим адресом (смещением). При этом размещаемые в нем данные выравниваются по левому (нижнему) краю. В этом случае адрес свободного пространства сдвигается вверх (в сторону окончания блока).
В качестве ответа в выходной поток следует вывести адрес выделенного блока. В случае отказа от выделения памяти (если блок подходящего размера не был найден), в выходной поток выводится ' − 1'.
Запрос на удаление
Вначале выполняется поиск выделенного блока с заданным адресом.
Если такой блок был найден, он удаляется из таблицы (дополняя окружающее его свободное пространство), а в выходной поток выводится его размер. В противном случае, выводится ' − 2'.
В начале входного файла "input.txt" хранятся два натуральных числа: L — доступный объем памяти и n — общее число запросов. Далее следует ровно n строк, записанных в следующем формате:
new <размер_блока> — запрос на выделение;
del <адрес_блока> — запрос на удаление.
Выходной файл "output.txt" должен содержать результаты выполнения каждого такого запроса.
Полагается, что адресация памяти начинается с нуля.
0 < L ≤ 109, 0 < n ≤ 105
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
Пусть имеется текстовая строка S, состоящая из цифр и букв латинского алфавита. При этом полагается, что регистр их написания неважен, т.е. заглавные и строчные символы эквивалентны между собой. На основе указанной строки требуется сформировать словарь T, в котором отдельным ее подстрокам ставятся в соответствие некоторые числовые коды. Описание вычислительной процедуры для получения таких кодов приводится ниже:
Если при попытке добавления очередной подстроки число записей в словаре превысит некоторое заданное n, словарь должен быть очищен. Счетчик k при этом обнуляется. Последний считанный символ (в окончании текущего префикса) возвращается в поток, и процедура возобновляется с той же позиции, в которой она остановилась.
В качестве ответа требуется вывести содержимое такого словаря на момент окончания входной строки.
В первой строке входного файла "input.txt" записано натуральное число n.
Далее следует строка S, для которой необходимо построить словарь.
В выходной файл "output.txt" нужно вывести все содержащиеся в словаре подстроки, приведенные к одному регистру и расположенные в лексикографическом порядке.
Напротив каждой такой строки (через пробел) следует указать ее порядковый номер.
10 ≤ n ≤ 5000, 0 < |S| ≤ 2 ⋅ 107
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 2 Мб | |
Выходной файл: | output.txt |
Пусть имеется n спичек равной длины. Из указанных спичек необходимо собрать набор прямоугольных блоков, каждый из которых представляет собой двумерную матрицу квадратных ячеек (см. рисунок). При этом каждое ребро в таком блоке соответствует ровно одной спичке. Таким образом, полученный блок однозначно определяется своей конфигурацией [A × B], где A и B — размеры его сторон. Блоки, совпадающие с точностью до поворота, считаются одинаковыми, т.е. [A × B] = [B × A].
Требуется вывести все уникальные комбинации прямоугольных блоков, которые можно составить из заданного числа спичек. При этом каждая такая комбинация должна включать в себя все имеющиеся спички. Комбинации, различающиеся только лишь порядком следования составляющих их блоков, полагаются тождественными и не должны встречаться более одного раза.
Входной файл "input.txt" содержит исходное число спичек n.
Выходной файл "output.txt" должен содержать все найденные комбинации, представленные в следующем формате: вначале указывается число блоков в текущей комбинации k; далее следует ровно k пар натуральных чисел, определяющих конфигурации имеющихся блоков.
В случае, если подходящие комбинации не были найдены,
выходной файл следует оставить пустым.
0 < n ≤ 128
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 2 Мб | |
Выходной файл: | output.txt |
В рамках одного научно-исследовательского проекта возникла необходимость в эффективной передаче экспериментальных данных, имеющих специальный вид, между различными узлами вычислительной сети. В связи с этим была сформулирована следующая задача.
Пусть имеется некоторая бинарная последовательность (состоящая из нулей и единиц), разбитая на блоки фиксированной длины. При этом заранее известно, что каждый такой блок содержит в себе ровно n нулей и m единиц.
При передаче указанной последовательности по внешнему каналу связи требуется представить ее в сжатом виде. Для этого рассмотрим множество всех различных значений, которые могут принимать составляющие ее блоки. Отсортировав их в лексикографическом порядке, получим некоторый упорядоченный алфавит. Далее заменим каждый отдельный блок входной последовательности числовым кодом, указывающим его позицию в таком алфавите (будем полагать, что нумерация символов алфавита начинается с нуля).
Несложно показать, что размер полученного алфавита обратно пропорционален значению |n − m|. Так, в предельном случае, когда n (или m) равно нулю, алфавит будет состоять всего-лишь из одного символа. В свою очередь, чем меньше размер алфавита, тем меньшее число бит будет требоваться для представления номеров содержащихся в нем символов.
Если предположить, что во входной последовательности преобладают нулевые (либо единичные) биты, тогда от предложенного подхода можно будет ожидать достаточно высокой степени сжатия.
В первой строке входного файла "input.txt" записаны два целых неотрицательных числа n и m. Далее следует текстовая строка, состоящая из n нулей и m единиц.
Выходной файл "output.txt" должен содержать результирующий код указанной строки, представленный в двоичной системе счисления (ведущие нули при этом можно опустить).
0 < (n + m) ≤ 2 ⋅ 104
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 2 Мб | |
Выходной файл: | output.txt |
Пусть имеется формальный язык, слова которого представляют собой цепочки символов, составленные из отдельных неперекрывающихся подцепочек (морфов). Значения, которые способны принимать указанные морфы, образуют словарь базовых единиц (основ) исходного языка. При этом полагается, что никакие две основы не могут иметь общих префиксов.
Для заданного набора слов требуется определить список основ, разбивающих их на минимально возможное число морфов. Для каждой такой основы необходимо также посчитать, сколько раз она встречается в исходном тексте (в качестве значения какого-либо морфа).
В начале входного файла "input.txt" хранится натуральное число n. Далее следует набор из n слов, состоящих из цифр и букв латинского алфавита (регистр их написания неважен). При этом каждое слово располагается в отдельной строке.
Выходной файл "output.txt" должен содержать все найденные основы (без повторений), приведенные к одному регистру и расположенные в лексикографическом порядке. Напротив каждой такой основы (через пробел) указывается число совпадающих с ней морфов.
Полагается, что длина отдельно взятого слова лежит в диапазоне от 1 до 5000.
0 < n ≤ 105.
Размер входного файла не превосходит 10 МБ.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 2 Мб | |
Выходной файл: | output.txt |
Палиндромом называется строка символов, которая одинаково читается в обоих направлениях (слева направо и справа налево).
Пусть имеется произвольная строка S.
Рассмотрим упорядоченный список всех различных палиндромов,
которые могут быть получены через операции удаления и перестановки символов в исходной строке.
Из указанного списка требуется исключить палиндромы, лексикографический порядок которых меньше, чем у некоторой заданной строки T.
Если после этого его длина окажется больше n, лишние (с конца) палиндромы также следует удалить.
В заголовке входного файла "input.txt" содержатся две строки S и T, состоящие из цифр и строчных букв латинского алфавита.
За ними следует натуральное число n.
Выходной файл "output.txt" должен содержать все оставшиеся палиндромы, расположенные в лексикографическом порядке.
В случае если их число равно нулю, выходной файл следует оставить пустым.
0 < |T| ≤ |S| ≤ 100,
0 < n ≤ 2 ⋅ 104
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 16 Мб | |
Выходной файл: | output.txt |
Вася изобрел устройство, работающее по принципу конечного автомата. На вход ему подается циклическая цепочка (строка) символов, по которой двигается специальный указатель. За один такт устройства оно считывает символ, находящийся в текущей позиции указателя, и выполняет некоторое действие, определенное специальной таблицей команд.
Каждая i-я команда в такой таблице задается набором следующих значений: Si Ci Qi Hi, где Si — текущее состояние устройства; Ci — символ в текущей позиции; Qi — состояние, в которое следует перейти; Hi указывает величину, на которую необходимо сдвинуть указатель (положительные значения — вправо, отрицательные — влево).
Известно также, что программа прекратит свою работу в одном из следующих случаев:
Для некоторой заданной строки и таблицы команд требуется определить начальные условия (номер позиции и состояние)
при которых указанное устройство выполнит максимально возможное число шагов.
В начале входного файла "input.txt" хранится строка T, состоящая из цифр и строчных символов латинского алфавита.
Далее указано натуральное число M, за которым следует ровно M команд, записанных в указанном выше формате.
Выходной файл "output.txt" должен содержать номер стартовой позиции и начальное состояние.
При этом полагается, что нумерация позиций в строке начинается с нуля.
Гарантируется, что заданная программа является корректной
и не содержит взаимоисключающих инструкций.
0 < |T| ≤ 500, 0 ≤ (Si, Qi) < 1000, 0 ≤ |Hi| ≤ |T|,
0 < M ≤ 36 ⋅ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 8 Мб | |
Выходной файл: | output.txt |
Рассмотрим строку S, выступающую в качестве ключа в некотором симметричном алгоритме шифрования.
Для того, чтобы закодировать очередной символ входной последовательности, его необходимо переместить в начало такой строки путем ее циклического сдвига. Стоимость каждого отдельного сдвига определяется числом пропущенных позиций.
Требуется определить набор циклических сдвигов строки S с наименьшей общей стоимостью, необходимых для того, чтобы последовательно закодировать заданный набор символов T.
В начале входного файла "input.txt" записана строка S. Далее следует последовательность символов T, которую необходимо закодировать.
Выходной файл "output.txt" должен содержать последовательность сдвигов строки S, оптимальным образом кодирующих строку T.
При этом сдвиги вправо обозначаются положительными числами, влево — отрицательными.
Полагается, что обе строки состоят из цифр и строчных букв латинского алфавита.
При этом строка T не может содержать символы, отсутствующие в строке S.
0 < |S| ≤ 500, 0 < |T| ≤ 1000
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 8 Мб | |
Выходной файл: | output.txt |
Вася устроился шеф-поваром в один из элитных ресторанов. Каждый день он вынужден обслуживать большое число клиентов, которые зачастую бывают очень привередливы в своих вкусовых предпочтениях.
Одной из важнейших особенностей его блюд являются разного рода специи. Каждому клиенту, в соответствии с его вкусом, требуется определенное количество специй каждого вида. Если же в его блюдо положить недостаточное количество специй, он останется крайне недоволен.
По причине того, что в отдельно взятый период времени на кухне существует некоторое ограниченное количество специй, порой бывает невозможно должным образом обслужить всех клиентов.
В связи с этим Вася обратился к Вам с просьбой помочь ему минимизировать число недовольных клиентов.
В начале входного файла "input.txt" записано число разных видов специй M, за которым следует ровно M целых чисел Aj, указывающих количество специй каждого вида.
Далее следует N — число гостей, и матрица Pi j — в которой каждому i-му гостю приписано число специй j-го вида, которое ему требуется.
Выходной файл "output.txt" должен содержать порядковые номера гостей, которых удастся обслужить.
При этом полагается, что нумерация гостей начинается с нуля.
Все входные значения являются целыми десятичными числами.
0 < M ≤ 5, 0 < N ≤ 50, 0 ≤ (Aj, Pi j) < 10
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Author: | A. Baranov | Time limit: | 1 sec | |
Input file: | input.txt | Memory limit: | 16 Mb | |
Output file: | output.txt |
Consider the directory that contains files. Names of these files are composed from Latin letters (uppercase A-Z and lowercase a-z letters are distinct), digits, such characters as '-' (ASCII 45), '.' (ASCII 46) and spaces (ASCII 32). Different files have different names.
Initial content of any file is unique. In future it can not be changed, but it can be copied to a new file.
There is need to periodically synchronize the local version of this directory with its backup copy that is placed on remote server. In this case the previous version of the remote directory must be updated to the current state with minimal computational costs.
For this purpose all operations that are performed in the local directory are stored to in a special log, in historical order. This log contains records in following forms:
It is known that these operations cause error if:
To update of the remote directory, we must apply similar operations to it. In this case each of them has a certain cost: for mov and del it is 1, cost of cpy is 10.
Also we assume that operation new means to copy a file from the local directory to remote server and has cost is 100.
Your program must, given the initial state of remote directory and set of records of the log, obtain sequence of the operations with minimal total cost that allow to make update of the backup copy to the current state. These operations must not cause errors.
Special file name "~" (ASCII 126) is considered acceptable by remote server, but is not used by operations in the log. It is recommended to use this name for temporary file copies.
Input file contains integer N — initial number of files in the directory, followed by the N file names enclosed in double quotes, one name per line.
After that, input file contains integer M — number of the records of the log, followed by M log records, one record per line.
All file names are enclosed in double quotes.
Output file must contain integer L — number of the operations, followed by L operations in the same format as log records, one operation per line.
All file names must be enclosed in double quotes.
File names have length from 1 to 16 characters. Operations in the log do not cause errors.
0 ≤ N, M ≤ 104
No. | Input file (input.txt ) |
Output file (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 16 Мб | |
Выходной файл: | output.txt |
Пусть имеется корневое дерево, узлам которого ранее был приписан определенный набор цветов. Каждый нелистовой узел такого дерева содержит произвольное число ссылок на своих потомков. При этом полагается, что порядок их следования имеет значение.
В исходном дереве могут встречаться поддеревья, обладающие одинаковой структурой. Здесь используется тот факт, что с точки зрения стороннего наблюдателя, два дерева считаются тождественными, если их корни окрашены в одинаковые цвета и все соответствующие потомки тождественны между собой. Как следствие, ссылки на указанные поддеревья также являются взаимозаменяемыми.
Для экономии памяти, исходное дерево следует представить в сжатом виде. С этой целью требуется расставить ссылки на потомков таким образом, чтобы минимизировать число узлов в полученном графе, сохранив при этом структуру исходного дерева.
Во входном файле "input.txt" хранится дерево, представленное в следующем виде. Вначале идет цвет корневого узла, после которого (через пробел) указывается число его прямых потомков. Затем следует упорядоченный набор таких потомков, записанных аналогичным образом.
Для обозначения цветов здесь используются цифры и строчные буквы латинского алфавита.
Каждому узлу также ставится в соответствие его порядковый номер (начиная с нуля).
Выходной файл "output.txt" должен содержать пары значений: номер старого узла и номер узла, на который его следует заменить.
При этом корень дерева (узел с нулевым индексом) является не перемещаемым.
В случае если сжатие не может быть выполнено, выходной файл следует оставить пустым.
Полагается, что каждый узел имеет не более 10 потомков.
При этом общее число узлов не превосходит 2 ⋅ 105.
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
У одной инженерной компании, занимающейся прокладкой труб холодного водоснабжения, возникла необходимость в оптимизации потенциальных затрат на постройку очередного водопровода. Решение указанной задачи, естественно, возложили на программистов.
В качестве входных данных им выдали карту, представленную в виде взвешенного графа, вершины которого отвечают за населенные пункты (с расположенными в них распределительными станциями), а ребра обозначают соединяющие их магистрали. Каждое ребро имеет вес, указывающий длину соответствующей магистрали.
Для того, чтобы обеспечить водой даже самые труднодоступные районы, требуется построить распределенную сеть из водонапорных труб, проходящую через все указанные пункты. При этом сами трубы должны пролегать строго вдоль выделенных магистралей.
В целях экономии ресурсов также необходимо чтобы такая сеть имела минимально возможную длину.
При решении задачи следует полагать, что в полученной сети существует всего лишь один источник воды, от которого будут запитываться все остальные узлы.
В начале входного файла "input.txt" записаны два натуральных числа: n — число вершин и m — число соединяющих их ребер. Далее следует набор из m таких ребер, каждое из которых представлено тройкой целых чисел: (ai, bi) — номера вершин, wi — вес ребра. При этом полагается, что нумерация вершин начинается с нуля.
В выходной файл "output.txt" следует вывести номера тех ребер, через которые должен пройти водопровод. При этом полагается, что нумерация ребер начинается с нуля.
Гарантируется, что исходный граф является связным, т.е. между любой парой его вершин можно проложить маршрут.
2 ≤ n ≤ 1000, 1 ≤ m ≤ (n ⋅ (n − 1)) / 2,
0 ≤ (ai, bi) < n, 0 < wi ≤ 10
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
Караван купцов движется из города S в город F. Их маршрут должен пройти через города, соединенные между собой прямыми путями.
Известно, что за проход через отдельно взятый город купцам придется платить некоторую установленную пошлину.
Помимо этого за каждую единицу пути, караван тратит определенное число ресурсов, также выраженных в денежном эквиваленте.
Требуется проложить маршрут, минимизирующий суммарную пошлину и число затраченных ресурсов.
В случае, если существует несколько таких маршрутов, необходимо выбрать тот, который проходит через наибольшее число городов.
В начале входного файла "input.txt" указано натуральное N — число городов, за которым следует набор из N целых чисел
Pi — размер пошлины для каждого i-го города.
Далее указано натуральное M, за которым следует ровно M троек целых чисел:
Aj, Bj — номера соседних городов;
Wj — стоимость перехода.
В конце входного файла указаны индексы начального S и конечного F города.
При этом полагается, что нумерация городов начинается с нуля.
Выходной файл "output.txt" должен содержать оптимальный маршрут,
представленный в виде последовательности городов,
через которые он проходит.
2 ≤ N ≤ 1000, 1 ≤ M ≤ (N ⋅ (N − 1)) / 2,
0 ≤ Pi ≤ 106,
0 ≤ (Aj, Bj) < N, Aj ≠ Bj,
0 < Wj ≤ 106
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|
Автор: | А. Баранов | Ограничение времени: | 1 сек | |
Входной файл: | input.txt | Ограничение памяти: | 4 Мб | |
Выходной файл: | output.txt |
Пусть имеется неориентированный граф, по ребрам которого движутся два гонщика (игрока). Каждому ребру такого графа ставится в соответствие целый положительный вес, обозначающий его длину. Полагается, что за одну единицу времени каждый гонщик проходит ровно одну единицу пути.
Известно, что первый игрок изначально выбирает оптимальный для себя маршрут. В случае, если для него существует несколько таких маршрутов, он может выбрать любой из них.
Второй игрок задумал перехватить своего соперника до того, как тот достигнет финишной вершины. С этой целью он хочет дождаться его в одной из промежуточных вершин.
Чтобы помочь 2-му игроку, необходимо определить номера тех вершин, через которые гарантированно (независимо от выбранного пути) пройдет 1-й игрок. После чего из числа таких вершин выбрать те, до которых 2-й игрок сможет добраться не позднее, чем это сделает 1-й.
В начале входного файла "input.txt" записаны два натуральных числа: n — число вершин и m — число соединяющих их ребер.
Далее следует набор из m таких ребер, каждое из которых представлено тройкой целых чисел: (ai, bi) — номера вершин, wi — вес ребра. При этом полагается, что нумерация вершин начинается с нуля.
В конце входного файла хранятся три числа f, p1 и p2, указывающие номер финишной вершины и стартовые позиции каждого из игроков.
Выходной файл "output.txt" должен содержать список из номеров вершин, удовлетворяющих условию задачи.
В случае, если таковых нет, выходной файл следует оставить пустым.
Гарантируется, что исходный граф является связным.
2 ≤ n ≤ 1000, 1 ≤ m ≤ (n ⋅ (n − 1)) / 2,
0 ≤ (ai, bi) < n, 0 < wi ≤ 1000,
p1 ≠ p2
№ | Входной файл (input.txt ) |
Выходной файл (output.txt ) |
---|---|---|
1 |
|
|
2 |
|
|