Вася загадал число от 1 до \(N\). За какое наименьшее количество вопросов (на которые Вася отвечает "да" или "нет") Петя может угадать Васино число?
Вводится одно число \(N\)
Выведите наименьшее количество вопросов, которого гарантированно хватит Пете, чтобы угадать Васино число.
| Ввод | Вывод |
|---|---|
2 |
1 |
3 |
2 |
Дано два списка чисел, числа в первом списке упорядочены по неубыванию. Для каждого числа из второго списка определите номер первого и последнего появления этого числа в первом списке.
В первой строке входных данных записано два числа \(N\) и \(M\) (\(1\le N, M\le 20000\)). Во второй строке записано \(N\) упорядоченных по неубыванию целых чисел — элементы первого списка. В третьей строке записаны \(M\) целых неотрицательных чисел - элементы второго списка. Все числа в списках - целые 32-битные знаковые.
Программа должна вывести \(M\) строчек. Для каждого числа из второго списка нужно вывести номер его первого и последнего вхождения в первый список. Нумерация начинается с единицы. Если число не входит в первый список, нужно вывести одно число \(0\).
| Ввод | Вывод |
|---|---|
10 5 1 1 3 3 5 7 9 18 18 57 57 3 9 1 179 |
10 10 3 4 7 7 1 2 0 |
Реализуйте алгоритм приближенного бинарного поиска.
В первой строке входных данных содержатся числа \(N\) и \(K\) (\(0 \lt N,\,K \lt 100\,001\)). Во второй строке задаются \(N\) чисел первого массива, отсортированного по неубыванию, а в третьей строке – \(K\) чисел второго массива. Каждое число в обоих массивах по модулю не превосходит \(2\cdot10^9\).
Для каждого из \(K\) чисел выведите в отдельную строку число из первого массива, наиболее близкое к данному. Если таких несколько, выведите меньшее из них.
| Ввод | Вывод |
|---|---|
5 5 1 3 5 7 9 2 4 8 1 6 |
1 3 7 1 5 |
Когда Петя учился в школе, он часто участвовал в олимпиадах по информатике, математике и физике. Так как он был достаточно способным мальчиком и усердно учился, то на многих из этих олимпиад он получал дипломы. К окончанию школы у него накопилось \(n\) дипломов, причём, как оказалось, все они имели одинаковые размеры: \(w\) — в ширину и \(h\) — в высоту. Сейчас Петя учится в одном из лучших российских университетов и живёт в общежитии со своими одногруппниками. Он решил украсить свою комнату, повесив на одну из стен свои дипломы за школьные олимпиады. Так как к бетонной стене прикрепить дипломы достаточно трудно, то он решил купить специальную доску из пробкового дерева, чтобы прикрепить её к стене, а к ней — дипломы. Для того чтобы эта конструкция выглядела более красиво, Петя хочет, чтобы доска была квадратной и занимала как можно меньше места на стене. Каждый диплом должен быть размещён строго в прямоугольнике размером \(w\) на \(h\). Дипломы запрещается поворачивать на 90 градусов. Прямоугольники, соответствующие различным дипломам, не должны иметь общих внутренних точек. Требуется написать программу, которая вычислит минимальный размер стороны доски, которая потребуется Пете для размещения всех своих дипломов.
Входной файл содержит три целых числа: \(w\), \(h\), \(n\) (\(1\le w,h,n\le 10^9\)).
В выходной файл необходимо вывести ответ на поставленную задачу.
| Ввод | Вывод |
|---|---|
2 3 10 |
9 |
Дано \(N\) отрезков провода длиной \(L_{1},\, L_{2},\, \ldots,\, L_{N}\) сантиметров. Требуется с помощью разрезания получить из них \(K\) равных отрезков как можно большей длины, выражающейся целым числом сантиметров. Если нельзя получить \(K\) отрезков длиной даже \(1\) см, вывести \(0\).
Ограничения: \(1 \leq N \leq 10^{4},\; 1 \leq K \leq 10^{4},\; 10^{2} \leq L_{i} \leq 10^{7}\), все числа целые.
В первой строке находятся числа \(N\) и \(K\). В следующих \(N\) строках - \(L_{1},\, L_{2},\, \ldots,\, L_{N}\), по одному числу в строке.
Вывести одно число - полученную длину отрезков.
| Ввод | Вывод |
|---|---|
4 11 802 743 457 539 |
200 |
На прямой расположены стойла, в которые необходимо расставить коров так, чтобы минимальное расcтояние между коровами было как можно больше.
В первой строке вводятся числа \(N\) \((2 \lt N \lt 10001)\) – количество стойл и \(K\) (\(1 \lt K \lt N )\) – количество коров. Во второй строке задаются \(N\) натуральных чисел в порядке возрастания – координаты стойл (координаты не превосходят \(10^9\))
Выведите одно число – наибольшее возможное допустимое расстояние.
| Ввод | Вывод |
|---|---|
6 3 2 5 7 11 15 20 |
9 |
Сегодня утром жюри решило добавить в вариант олимпиады еще одну, Очень Легкую Задачу. Ответственный секретарь Оргкомитета напечатал ее условие в одном экземпляре, и теперь ему нужно до начала олимпиады успеть сделать еще \(N\) копий. В его распоряжении имеются два ксерокса, один из которых копирует лист за \(х\) секунд, а другой – за \(y\). (Разрешается использовать как один ксерокс, так и оба одновременно. Можно копировать не только с оригинала, но и с копии.) Помогите ему выяснить, какое минимальное время для этого потребуется.
На вход программы поступают три натуральных числа \(N\), \(x\) и \(y\), разделенные пробелом \((1 \leq N \leq 2\cdot10^{8},\, 1 \leq x, y \leq 10)\).
Выведите одно число – минимальное время в секундах, необходимое для получения \(N\) копий.
| Ввод | Вывод |
|---|---|
4 1 1 |
3 |
5 1 2 |
4 |
Дано действительное число \(a\) и натуральное \(n\). Вычислите корень \(n\)-й степени из числа \(a\).
Для решения используйте метод деления отрезка пополам.
Число \(a\) действительное, неотрицательное, не превосходит \(1000\), задано с точностью до \(6\) знаков после запятой. Число \(n\) натуральное, не превосходящее \(10\).
Программа должна вывести единственное число: ответ на задачу с точностью не менее \(6\) знаков после запятой.
| Ввод | Вывод |
|---|---|
2 2 |
1.41421356237 |
4 2 |
2.0 |
Дано кубическое уравнение \(ax^{3} + bx^{2} + cx + d = 0 \;(a \ne 0)\). Известно, что у этого уравнения ровно один корень. Требуется его найти.
Во входных данных через пробел записаны четыре целых числа: \(-1000 \le a,\,b,\,c,\,d \le 1000\).
Выведите единственный корень уравнения с точностью не менее 4 знаков после десятичной точки.
| Ввод | Вывод |
|---|---|
1 -3 3 -1 |
0.999999598818135 |
-1 -6 -12 -7 |
-0.999999999990564 |
Для освоения Марса требуется построить исследовательскую базу. База должна состоять из \(n\) одинаковых модулей, каждый из которых представляет собой прямоугольник.
Каждый модуль представляет собой жилой отсек, который имеет форму прямоугольника размером \(a \times b\) метров. Для повышения надежности модулей инженеры могут добавить вокруг каждого модуля слой дополнительной защиты. Толщина этого слоя должна составлять целое число метров, и все модули должны иметь одинаковую толщину дополнительной защиты. Модуль с защитой, толщина которой равна \(d\) метрам, будет иметь форму прямоугольника размером \((a + 2d) \times (b + 2d)\) метров.
Все модули должны быть расположены на заранее подготовленном прямоугольном поле размером \(w \times h\) метров. При этом они должны быть организованы в виде регулярной сетки: их стороны должны быть параллельны сторонам поля, и модули должны быть ориентированы одинаково.
Требуется написать программу, которая по заданным количеству и размеру модулей, а также размеру поля для их размещения, определяет максимальную толщину слоя дополнительной защиты, который можно добавить к каждому модулю.
Строка содержит пять разделенных пробелами целых чисел: \(n\), \(a\), \(b\), \(w\) и \(h\) (\(1 \le n, a, b, w, h \le 10^{18}\)). Гарантируется, что без дополнительной защиты все модули можно разместить в поселении описанным образом.
Ответ должен содержать одно целое число: максимальную возможную толщину дополнительной защиты. Если дополнительную защиту установить не удастся, требуется вывести число \(0\).
| Ввод | Вывод |
|---|---|
1 1 1 1 1 |
0 |
1 1 1 3 3 |
1 |
Фермер Николай нанял двух лесорубов: Дмитрия и Федора, чтобы вырубить лес, на месте которого должно быть кукурузное поле. В лесу растут \(X\) деревьев. Дмитрий срубает по A деревьев в день, но каждый \(K\)-й день он отдыхает и не срубает ни одного дерева. Таким образом, Дмитрий отдыхает в \(K\)-й, 2\(K\)-й, 3\(K\)-й день, и т.д. Федор срубает по B деревьев в день, но каждый \(M\)-й день он отдыхает и не срубает ни одного дерева. Таким образом, Федор отдыхает в \(M\)-й, 2\(M\)-й, 3\(M\)-й день, и т.д. Лесорубы работают параллельно и, таким образом, в дни, когда никто из них не отдыхает, они срубают \(A\) + \(B\) деревьев, в дни, когда отдыхает только Федор — \(A\) деревьев, а в дни, когда отдыхает только Дмитрий — \(B\) деревьев. В дни, когда оба лесоруба отдыхают, ни одно дерево не срубается. Фермер Николай хочет понять, за сколько дней лесорубы срубят все деревья, и он сможет засеять кукурузное поле. Требуется написать программу, которая по заданным целым числам \(A\), \(K\), \(B\), \(M\) и \(X\) определяет, за сколько дней все деревья в лесу будут вырублены.
Входной файл содержит пять целых чисел, разделенных пробелами: \(A\), \(K\), \(B\), \(M\) и \(X\) \((1 \leq A,\, B \leq 10^{9},\; 2 \leq K,\, M \leq 10^{18},\; 1 \leq X \leq 10^{18})\).
Выходной файл должен содержать одно целое число — искомое количество дней.
| Ввод | Вывод |
|---|---|
1 2 1 3 10 |
8 |
1 2 1 3 11 |
9 |
В классе учатся \(N\) человек. Классный руководитель получил указание направить на субботник \(R\) бригад по \(С\) человек в каждой.
Все бригады на субботнике будут заниматься переноской бревен. Каждое бревно одновременно несут все члены одной бригады. При этом бревно нести тем удобнее, чем менее различается рост членов этой бригады.
\(Числом неудобства\) бригады будем называть разность между ростом самого высокого и ростом самого низкого членов этой бригады (если в бригаде только один человек, то эта разница равна 0). Классный руководитель решил сформировать бригады так, чтобы максимальное из чисел неудобства сформированных бригад было минимально. Помогите ему в этом!
Рассмотрим следующий пример. Пусть в классе 8 человек, рост которых в сантиметрах равен 170, 205, 225, 190, 260, 130, 225, 160, и необходимо сформировать две бригады по три человека в каждой. Тогда одним из вариантов является такой:
1 бригада: люди с ростом 225, 205, 225
2 бригада: люди с ростом 160, 190, 170
При этом число неудобства первой бригады будет равно 20, а число неудобства второй — 30. Максимальное из чисел неудобств будет 30, и это будет наилучший возможный результат.
Сначала вводятся натуральные числа \(N\), \(R\) и \(C\) — количество человек в классе, количество бригад и количество человек в каждой бригаде \((1 \leq R \cdot C \leq N \leq 10^{5})\). Далее вводятся \(N\) целых чисел — рост каждого из \(N\) учеников. Рост ученика — натуральное число, не превышающее \(10^{9}\).
Выведите одно число — наименьше возможное значение максимального числа неудобства сформированных бригад.
| Ввод | Вывод |
|---|---|
8 2 3 170 205 225 190 260 130 225 160 |
30 |
Словарь задан массивом отсортированных в лексикографическом порядке строк. Напишите программу эффективного поиска слова в словаре.
На вход программе сначала подается искомое слово, во второй строке — число \(n\) \((1 \leq n \leq 10^{5})\) — количество слов в словаре. В следующих \(n\) строках расположены слова словаря, по одному слову в строке. Все слова состоят только из строчных латинских букв, слова упорядочены по алфавиту (расположены в лексикографическом порядке).
Длина слов не превосходит \(20\). Пустых слов нет.
Выведите YES или NO в зависимости от того, есть искомое слово в словаре или нет.
| Ввод | Вывод |
|---|---|
abba 4 a ab aba baba |
NO |
На день рождения Пете подарили коробку кубиков. На каждом кубике написано некоторое целое число. Петя выложил все \(n\) своих кубиков в ряд, так что числа на кубиках оказались расположены в некотором порядке \(a_{1}, \, a_{2}, \, \ldots, \, a_{n}\). Теперь он хочет раскрасить кубики в разные цвета таким образом, чтобы для каждого цвета последовательность чисел на кубиках этого цвета была строго возрастающей. То есть, если кубики с номерами \(i_{1}, \, i_{2}, \, \ldots, \, i_{k}\) покрашены в один цвет, то \(a_{i_1} \lt a_{i_2}\lt ... \lt a_{i_k}\). Петя хочет использовать как можно меньше цветов. Помогите ему!
Первая строка входного файла содержит число \(n\) - количество кубиков у Пети (\(1 \le n \le 250000\)). В следующей строке записано \(n\) чисел \(a_{1}, \, a_{2}, \, \ldots, \, a_{k} \; (-2^{31} \le a_{i} \le 2^{31} - 1)\).
На первой строке выходного файла выведите число \(m\) — наименьшее количество цветов, которое потребуется Пете. На следующей строке выведите \(n\) чисел из диапазона от \(1\) до \(m\) — цвета, в которые Петя должен покрасить кубики.
| Ввод | Вывод |
|---|---|
10 2 3 1 3 2 1 2 2 4 3 |
5 1 1 2 2 3 4 4 5 1 3 |