Темы
    Информатика(2656 задач)
---> 304 задач <---
Источники --> Личные олимпиады --> Всероссийская олимпиада школьников
    Муниципальный этап(80 задач)
    Окружная олимпиада(18 задач)
    Региональный этап(109 задач)
    Заключительный этап(97 задач)
Страница: << 20 21 22 23 24 25 26 >> Отображать по:
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
64 megabytes

С детства Максим был неплохим музыкантом и мастером на все руки. Недавно он самостоятельно сделал несложный перкуссионный музыкальный инструмент — треугольник. Ему нужно узнать, какова частота звука, издаваемого его инструментом.

У Максима есть профессиональный музыкальный тюнер, с помощью которого можно проигрывать ноту с заданной частотой. Максим действует следующим образом: он включает на тюнере ноты с разными частотами и для каждой ноты на слух определяет, ближе или дальше она к издаваемому треугольником звуку, чем предыдущая нота. Поскольку слух у Максима абсолютный, он определяет это всегда абсолютно верно.

Вам Максим показал запись, в которой приведена последовательность частот, выставляемых им на тюнере, и про каждую ноту, начиная со второй, записано — ближе или дальше она к звуку треугольника, чем предыдущая нота. Заранее известно, что частота звучания треугольника Максима составляет не менее 30 герц и не более 4000 герц.

Требуется написать программу, которая определяет, в каком интервале может находиться частота звучания треугольника.

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

Первая строка входного файла содержит целое число \(n\) — количество нот, которые воспроизводил Максим с помощью тюнера (\(2\le n\le1000\)). Последующие \(n\) строк содержат записи Максима, причём каждая строка содержит две компоненты: вещественное число \(f_i\) — частоту, выставленную на тюнере, в герцах (\(30\le f_i\le4000\)), и слово «closer» или слово «further» для каждой частоты, кроме первой.

Слово «closer» означает, что частота данной ноты ближе к частоте звучания треугольника, чем частота предыдущей ноты, что формально описывается соотношением: \(|f_i-f_{треуг.}|<|f_{i-1}-f_{треуг.}|\).

Слово «further» означает, что частота данной ноты дальше, чем предыдущая.

Если оказалось, что очередная нота так же близка к звуку треугольника, как и предыдущая нота, то Максим мог записать любое из двух указанных выше слов.

Гарантируется, что результаты, полученные Максимом, непротиворечивы.

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

В выходной файл необходимо вывести через пробел два вещественных числа — наименьшее и наибольшее возможное значение частоты звучания треугольника, изготовленного Максимом. Числа должны быть выведены с точностью не хуже \(10^{-6}\).

Примеры
Входные данные
3
440
220 closer
300 further
Выходные данные
30.0 260.0
Входные данные
4
554
880 further
440 closer
622 closer
Выходные данные
531.0 660.0
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
64 megabytes

Предприятие «Авто-2010» выпускает двигатели для известных во всём мире автомобилей. Двигатель состоит ровно из \(n\) деталей, пронумерованных от 1 до \(n\), при этом деталь с номером \(i\) изготавливается за \(p_i\) секунд. Специфика предприятия «Авто-2010» заключается в том, что там одновременно может изготавливаться лишь одна деталь двигателя. Для производства некоторых деталей необходимо иметь предварительно изготовленный набор других деталей.

Генеральный директор «Авто-2010» поставил перед предприятием амбициозную задачу — за наименьшее время изготовить деталь с номером 1, чтобы представить её на выставке.

Требуется написать программу, которая по заданным зависимостям порядка производства между деталями найдёт наименьшее время, за которое можно произвести деталь с номером 1.

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

Первая строка входного файла содержит число \(n\) (\(1\le n\le100000\)) — количество деталей двигателя. Вторая строка содержит \(n\) натуральных чисел \(p_1,p_2, \ldots,p_n\), определяющих время изготовления каждой детали в секундах. Время для изготовления каждой детали не превосходит \(10^9\) секунд.

Каждая из последующих \(n\) строк входного файла описывает характеристики производства деталей. Здесь \(i\)-я строка содержит число деталей \(k_i\), которые требуются для производства детали с номером \(i\), а также их номера. В \(i\)-й строке нет повторяющихся номеров деталей. Сумма всех чисел \(k_i\) не превосходит 200000.

Известно, что не существует циклических зависимостей в производстве деталей.

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

В первой строке выходного файла должны содержаться два числа: минимальное время (в секундах), необходимое для скорейшего производства детали с номером 1 и число \(k\) деталей, которые необходимо для этого произвести. Во второй строке требуется вывести через пробел \(k\) чисел — номера деталей в том порядке, в котором следует их производить для скорейшего производства детали с номером 1.

Примеры
Входные данные
3
100 200 300
1 2
0
2 2 1
Выходные данные
300 2
2 1
Входные данные
2
2 3
1 2
0
Выходные данные
5 2
2 1
Входные данные
4
2 3 4 5
2 3 2
1 3
0
2 1 3
Выходные данные
9 3
3 2 1
ограничение по времени на тест
4.0 second;
ограничение по памяти на тест
64 megabytes

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

Небольшая компания «Домострой» также решила выйти на этот рынок и стала предлагать место для рекламы на своих блоках заборов. Блок представляет собой параллелепипед размером \(1\times1\times L\), на одной из сторон которого есть место для рекламы — пространство размера \(1\times L\), в которое можно вписать ровно \(L\) букв латинского алфавита.

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

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

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

После того, как некоторое число \(K\) блоков, каждый из которых имеет длину \(L\), поставили друг на друга, получилась прямоугольная таблица размером \(K\times L\), в каждой клетке которой находится буква латинского алфавита. Каждый рекламный блок соответствует строке этой таблицы. Теперь содержимое этой таблицы выписывается по столбцам, начиная с самого левого. При этом в каждом столбце буквы выписываются сверху вниз. В случае, изображённом на рисунке, в результате этого процесса получилась бы строка «TOEIIZENITKN». Необходимо, чтобы рекламная надпись, требуемая заказчику, входила в получившуюся строку как подстрока «TOEIIZENITKN».

Требуется написать программу, которая будет определять, какое минимальное количество блоков надо использовать, чтобы получить рекламную надпись, необходимую заказчику. При этом можно считать, что на складе блоков каждого типа неограниченно много.

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

Первая строка входного файла содержит два натуральных числа \(N\) и \(L\) — число различных типов блоков на складе и длина каждого блока соответственно (\(1\le N\le100\), \(1\le L\le100\)). Последующие \(N\) строк содержат по одной записи длиной \(L\), состоящей из строчных латинских букв — надписи на блоках соответствующего типа. Надписи на блоках разных типов не совпадают.

Последняя строка входного файла содержит новую рекламную надпись \(s\) — строку, состоящую только из строчных латинских букв (\(1\le|s|\le200\)). Можно считать, что на складе находится неограниченное число блоков каждого типа.

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

В первой строке выходного файла необходимо вывести натуральное число \(K\) — минимальное количество блоков, которое нужно использовать для составления новой рекламы. Следующая строка должна содержать \(K\) чисел — номера типов блоков, которые нужно для этого использовать, перечисляя их сверху вниз. Типы блоков нумеруются с единицы в порядке их задания во входном файле.

Если ответов несколько, выведите любой из них. Если решения не существует, выведите в выходной файл число \(-1\).

Примеры
Входные данные
3 4
tiet
oink
ezin
zenit
Выходные данные
3
1 2 3
Входные данные
2 11
sillysample
happysample
sam
Выходные данные
1
2
Входные данные
2 3
baa
aab
bb
Выходные данные
2
2 2
Входные данные
2 3
aaa
bbb
cc
Выходные данные
-1
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Cреди всех прямоугольных параллелепипедов с натуральными длинами сторон и площадью поверхности не более \(n\) найти тот, объём которого максимален.

Начинающий программист Поликарп очень любит дарить подарки, особенно в коробках. Он давно заметил, что если коробка красиво оформлена, то радость от подарка возрастает многократно. Любой обёрточной бумаге он предпочитает клетчатую. В самом деле, после распаковки подарка на ней можно играть в крестики-нолики, морской бой, точки, а также решать задачи и писать программы.

Поликарп очень аккуратен. Он упаковывает подарок в коробку, имеющую форму прямоугольного параллелепипеда, и оклеивает всю её поверхность клетчатой бумагой. При этом каждая грань коробки представляет собой прямоугольник, состоящий из целых клеток. На рисунке изображён пример такой упаковки подарка.

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

У Поликарпа в наличии есть лист клетчатой бумаги, состоящий из \(n\) клеток. Каким будет максимальный объём коробки, которую можно оклеить с использованием этого листа бумаги описанным выше способом? Поликарп может разрезать лист клетчатой бумаги по границам клеток произвольным образом и оклеивать коробку получившимися фигурами, поэтому форма листа не важна, а имеет значение только количество клеток на нём. Поликарп может использовать для оклеивания коробки не все клетки.

Напишите программу, которая по заданному количеству клеток \(n\) находит размеры коробки максимального возможного объема.

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

Входной файл содержит одно целое число \(n\) (\(6\le n\le10^{13}\)) — количество клеток на листе клетчатой бумаги.

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

Выведите в первую строку выходного файла максимальный объём коробки, которую может подарить Поликарп. Объём следует выводить в «кубических клетках», то есть единицей измерения является куб со стороной, равной длине стороны клетки.

Во вторую строку выведите ширину, длину и высоту искомой коробки. Единица измерения — размер клетки. Числа разделяйте пробелами. Если решений несколько, то выведите любое из них.

Система оценивания

Решения, корректно работающие при \(n\le5\,000\), будут оцениваться из 30 баллов, а решения, корректно работающие при \(n\le10^8\), будут оцениваться из 70 баллов.

Примеры
Входные данные
6
Выходные данные
1
1 1 1
Входные данные
24
Выходные данные
8
2 2 2
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Задано множество из \(n\) станций и \(m\) трубопроводов, соединяющих некоторые пары станций. Требуется выбрать множество из \(k\) станций, чтобы один из двух концов каждого трубопровода лежал в выбранном множестве. Если построить граф, в котором станции будут служить вершинами, а трубопроводы — рёбрами, то искомое множество будет являться вершинным покрытием в этом графе.

Ханты-Мансийский автономный округ — Югра является важнейшим нефтяным регионом России. Добыча нефти составляет 267 млн т в год, её транспортировка осуществляется по трубопроводам, общая длина которых превышает длину экватора Земли.

Система транспортировки нефти представляет собой совокупность \(n\) распределительных станций и \(m\) трубопроводов. Каждый трубопровод соединяет две различные станции. Между любыми двумя станциями проложено не более одного трубопровода.

Эффективность работы станций существенно зависит от вязкости нефти. Поэтому компания «ЮграНефтеТранс», в ведении которой находится сеть трубопроводов, заказала инновационному исследовательскому предприятию разработку и изготовление новых сверхточных датчиков вязкости на основе самых современных технологий.

Изготовление датчиков — процесс трудоёмкий и дорогостоящий, поэтому было решено изготовить \(k\) датчиков (\(k\le40\)) и выбрать \(k\) различных станций, на которых датчики будут установлены. Необходимо осуществить выбор станций так, чтобы датчики контролировали все трубопроводы: для каждого трубопровода хотя бы один датчик должен быть установлен на станции, где начинается или заканчивается этот трубопровод.

Напишите программу, которая проверяет, существует ли требуемое расположение датчиков, и в случае положительного ответа находит это расположение.

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

В первой строке входного файла записаны три натуральных числа — \(n\), \(m\) и \(k\) (\(k\le n\le2000\), \(1\le m\le10^5\), \(1\le k\le40\)). Далее следуют \(m\) строк, каждая из которых описывает один трубопровод. Трубопровод задаётся двумя целыми числами — порядковыми номерами станций, которые он соединяет. Станции пронумерованы от 1 до \(n\). Гарантируется, что к любой станции подведён хотя бы один трубопровод и между любыми двумя станциями проложено не более одного трубопровода. Числа в каждой строке разделены пробелами.

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

В первую строку выходного файла выведите слово «Yes», если требуемое расположение датчиков существует, в противном случае — слово «No». В случае положительного ответа выведите во вторую строку выходного файла \(k\) различных целых чисел — номера станций, на которых необходимо установить датчики. Номера можно выводить в любом порядке. Если существует несколько подходящих расположений датчиков, выведите любое из них. Разделяйте числа во второй строке пробелами.

Система оценивания

Решения, корректно работающие при \(n\le100\) и \(k\le10\), будут оцениваться из 60 баллов.

Примеры
Входные данные
9 12 4
1 2
2 3
1 4
4 5
1 6
6 7
1 8
8 9
2 5
4 7
6 9
8 3
Выходные данные
Yes
2 4 6 8 
Входные данные
8 12 4
7 4
7 5
3 1
2 8
4 3
3 2
6 1
1 2
1 4
6 5
8 6
8 7
Выходные данные
No
Входные данные
4 3 1
3 1
3 2
3 4
Выходные данные
Yes
3 

Страница: << 20 21 22 23 24 25 26 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест