Алгоритмы(1657 задач)
Структуры данных(279 задач)
Интерактивные задачи(17 задач)
Другое(54 задач)
В далекой стране есть N городов. Был избран новый премьер-министр. В настоящее время в этой стране нет ни одной дороги, поэтому премьер-министр решил модернизировать страну, соединив некоторые города с двусторонними автострадами в транспортные сети. Два города будут расположены в одной и той же сети, если можно добраться до одного города от другого, используя недавно построенные дороги. Каждый город будет расположен в какой-то сети. Каждая сеть состоит из одного или нескольких городов.
Города представлены в виде точек в двумерной системе координат. Дорога между двумя городами представлена в виде отрезка, соединяющего две точки, в которых расположены города. Длина дороги равна длине отрезка в километрах.
В настоящее время страна переживает экономический спад, поэтому премьер-министр решил, что из-за отсутствия бюджета они не будут строить дороги длиннее, чем D километров. Кроме того, премьер-министр радуется мелочам, поэтому он будет счастлив, если по крайней мере в одной сети будет существовать непустое подмножество городов (оно может включать все города в сети), где общая сумма жителей делится на К . Например, если K = 4 и есть сеть с городами, в которых есть 3 , 5 , 7 жителей соответственно, премьер-министр будет счастлив, потому что сумма жителей в первых двух городах равна 8 .
Помогите премьер-министру сократить расходы, определив минимальный уровень D , необходимый для того чтобы премьер-министр мог строить дороги и одновременно быть счастливым.
Первая строка ввода содержит целые числа N и K (1 ≤ N ≤ 50000, 1 ≤ K ≤ 30) . Каждая из следующих N строк содержит три целых числа x i ; y i ; k i (0 ≤ x i , y i , k i ≤ 100000000) , которые представляют координату x города, координату y и количество жителей в этом городе, соответственно. На входных данных не будет двух городов с одинаковыми координатами. Кроме того, не будет ни одного города, в котором число жителей делится на К .
Первая и единственная строка вывода должна содержать минимальную D с точностью до 3 -х знаков после запятой, такую, что можно строить дороги с условием, что премьер-министр будет счастлив. Входные данные будут такими, чтобы всегда было решение.
Объяснение первого примера: единственный способ удержать премьер-министра в счастливом настроение - все города должны находятся в одном округе. Минимальный D , для которого это возможно, равен 1.414 .
Объяснение второго примера: премьер-министр будет рад, если первые 5 городов находятся в одном округе. Если D = 5.657 , премьер-министр может соединить города 1, 2, 3, 5 с городом 4 . В этом случае сумма жителей в городах 1, 2, 3, 4, 5 составит 11 , что делится на 11 , Поэтому премьер-министр будет счастлив.
3 3 0 4 4 1 5 1 2 6 1
1.414
6 11 0 0 1 0 1 2 1 0 3 1 1 4 5 5 1 20 20 10
5.657
6 5 20 20 9 0 0 3 0 1 1 10 0 1 10 1 6 12 0 3
2.000
Марко обнаружил новую функцию на его телефоне - Т9. На его телефоне имеется стандартная клавиатура на 9 кнопок:

Для того чтобы вводить текст на этой клавиатуре необходимо несколько раз нажимать клавишу с соответствующей буквой. Точнее, если это первая буква на клавише, нужно нажать 1 раз, если вторая буква - 2 раза, и так далее. Например, если мы хотим ввести слово "giht", то необходимо нажать клавиши следующим образом: g-4 i-444 h-44 t-8. Новая возможность, которую открыл Марко, упрощает ввод текста, потому что больше не требуется нажимать по одной клавише несколько раз подряд - достаточно всего одного нажатия. Программа будет пытаться понять, какое слово из словаря вы пытаетесь ввести.
Марко довольно скептически относится к новым технологиями (как минимум к новым для него) и он боится, что ошибки будут довольно часто. Марко наизусть знает весь словарь мобильного телефона. Он состоит из N слов, состоящих из строчных латинских букв, длина каждого слова не превышает 1000000 символов. Марко даст массив нажатий на клавиши S длиной не более 1000, и хочет узнать как много слов из словаря он может получить при такой последовательности нажатий если используется функция Т9.
Первая строка содержит единственное целое число N ( 1 ≤ N ≤ 1000 ) - количество слов в словаре. Каждая из следующих N строк содержит одно слово из словаря S i ( 1 ≤ | S i | ≤ 1000000 ). Последняя строка содержит строку S ( 1 ≤ | S | ≤ 1000 ), состоящую из цифр от 2 до 9.
Выведите единственное целое число - количество слов из словаря, которые можно получить при данной последовательности нажатий.
3 tomo mono dak 6666
1
2 ja la 52
2
3 dom fon tom 366
2
Банк страны Олимпия пригласил Петрика проверить новую систему безопасности. Его задача как можно скорее открыть сейф, разгадав такой шифр. Вокруг центрального круга сейфа записано p натуральных чисел. Для того, чтобы открыть сейф, необходимо заменить все числа на другие натуральные таким образом, что каждое число в сумме с q - 1 следующим числами давало бы первоначальное число. Например, если вокруг круга сейфа указано числа 11, 12, 11, 9, 9, 9, 9, и q = 5 , то нужно установить числа 1, 2, 3, 2, 3, 2, 1 и сейф будет открыт!
Напишите программу, которая по начальной конфигурации сейфа и числом q, восстановит одну из возможных конфигураций, откроют сейф.
В первой строке входного файла находится два натуральных числа p и q соответственно (1 ≤ q ≤ p ≤ \(10^4\)) . p и q - простые числа. В следующей строке задано p натуральных чисел, не превышающих \(10^9\) - исходная конфигурация сейфа.
В единственной строке выведите p натуральных чисел, не превышают \(10^9\) , которые откроют сейф. Гарантируется, что по крайней мере одна такая конфигурация существует. Если возможных ответов несколько, выведите любой из них.
Дополнительно гарантируются следующие условия:
1. 30% тестов: p ≤ 7 , существует ответ, в котором все искомые числа ≤ 7
2. 60% тестов: p ≤ 500 , существует ответ, в котором все искомые числа ≤ 500
3 2 7 6 9
5 2 4
Петрик обожает конструкторы. В этот раз он захотел поиграть с набором прямоугольных брусков. Этот набор состоит из n брусков, причем содержит ровно по одному бруску каждого из размеров 1 * 1, 1 * 2, ..., 1 * n. Петрик хочет выбрать некоторые бруски из набора и построить из них пирамидку. Пирамидка состоит из одного или более уровней высотой в один кубик, в каждом уровне бруски расположены горизонтально вплотную друг к другу меньшей стороной, а самый левый брусок в уровне расположен вплотную к стене, и каждый следующий уровень не более длиной, чем предыдущий (считая снизу вверх). При этом Петрик считает, что пирамидка будет более устойчивой, если каждый брусок в каждом уровне, кроме низкого, будет лежать не менее чем на двух брусках с предыдущего уровня. Например, такая конструкция не является пирамидкой, потому что брусок 1 * 2 лежит только на одном бруске: Найдите пирамидку с наибольшим количеством уровней, которую можно построить из некоторых брусков из данного набора с n брусков. Если таких пирамидок несколько, то выведите любую.
Одно целое число n ( 1 ≤ n ≤ 10 5 )
В первой строке целое число M - количество уровней в пирамидке с наибольшим возможным количеством уровней. Далее М строк, описывающих уровень снизу вверх, каждая из этих строк начинается с числа - количества брусков в соответствующем уровне, далее чисел - длины брусков в соответствующем уровне в порядке слева направо.
5
2 4 1 3 4 5 1 2
В распоряжении агрономического комбината «Олег и ко» находится n полей, пронумерованных от 1 до n . Для каждого поля определена его урожайность a i ≤ 10 9 — сколько килограмм винограда можно собрать с этого поля за год.
В связи с трудной экономической ситуацией руководству фирмы приходится принимать решительные (хоть и не совсем честные) меры по повышению стоимости акций предприятия. Руководство знает, что стоимость акций равна среднему арифметическому урожайностей полей, принадлежащих комбинату. Но эта величина может быть очень маленькой, поэтому руководство приняло решение сообщать при регистрации не обо всех полях, а лишь о каком-то множестве полей с последовательными индексами. Кроме того, некоторые поля не отвечают высоким стандартам производства винограда, поэтому регистрировать их нельзя (иначе фирму могут закрыть). Однако все знают, что у комбината более одного поля, поэтому регистрация одного поля будет выглядеть подозрительно, и, поэтому, директор всегда будет регистрировать не менее двух полей.
Вам необходимо помочь руководству фирмы и ответить на q запросов. Запросы могут быть одного из двух видов:
1 l r x — урожайность полей с номерами от l до r увеличиласть на x ( 1 ≤ x ≤ 10 9 ).
2 l r — предположим, разрешено регистрировать поля с номерами от l до r ( 1 ≤ l < r ≤ n ). Какой максимальной прибыли может добиться директор при правильном выборе полей, которые он будет регистрировать?
В первой строке входного файла задано 2 целых числа n и q — число полей у комбината и число запросов соответсвтенно.
Во второй строке задано n целых чисел a i ( 1 ≤ a i ≤ 10 9 ) через пробел — изначальные урожайности полей.
В следующих q строках заданы запросы в формате, описанном выше.
Для каждого запроса второго типа выведите вещественное число в отдельной строке — ответ на задачу. Ваш ответ будет считаться корректным если абсолютная или относительная погрешность не превосходит 10 - 4 .
n , q ≤ 100 — 15 баллов.
n , q ≤ 1000 — 50 баллов.
n , q ≤ 5·10 5 — 100 баллов.
3 3 2 1 2 2 1 3 1 2 2 4 2 1 3
1.66667 3.50000