Идеи

21 задачавместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Рамазан решил заняться серьезным бизнесом — выращиванием капусты.

Поле для выращивания капусты представляет собой бесконечное клетчатое поле. В каждой клетке поля может быть посажен один кочан капусты.

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


Формально, Рамазан выбрал \(n\) прямоугольных участков \((x_i^{L}, y_i^{L}, x_i^{R}, y_i^{R})\) (\(x_i^{L} \leq x_i^{R}\), \(y_i^{L} \leq y_i^{R}\), \(1 \leq i \leq n\)). Клетка \((x, y)\) содержит капусту, если существует хотя бы один выбранный прямоугольник \(i\) (\(1 \leq i \leq n\)), такой что \(x_i^{L} \leq x \leq x_i^{R}\) и \(y_i^{L} \leq y \leq y_i^{R}\).

В прошлом Рамазан был программистом (и победителем), поэтому он решил использовать роботов с искусственным интеллектом для периодической обработки посадок. Один робот может обслуживать произвольный горизонтальный участок клеток \((x_1^{robot}, x_2^{robot}, y^{robot})\), то есть все клетки \((x, y)\), такие что \(x_1^{robot} \leq x \leq x_2^{robot}\) и \(y = y^{robot}\).

Важно, чтобы роботы ездили только по участкам с посадками. Он понял, что для минимизации количества роботов важно использовать горизонтальные участки, которые нельзя расширить. Рамазан будет использовать робота на участке клеток \((x_1^{robot}, x_2^{robot}, y^{robot})\), если:

  • Все клетки \((x, y)\), такие что \(x_1^{robot} \leq x \leq x_2^{robot}\) и \(y = y^{robot}\) принадлежат посадкам;

  • Клетка \((x_1^{robot} - 1, y^{robot})\) не принадлежит посадкам;

  • Клетка \((x_2^{robot} + 1, y^{robot})\) не принадлежит посадкам.

Ваша задача собрать важную статистику о роботах, которые будут работать на плантации. Будем говорить, что пара \((x_1, x_2)\) обслуживается в ряду \(y\), если существует робот, работающий ровно на участке \((x_1, x_2, y)\).

  • Найдите все пары \((x_1, x_2)\), которые обслуживаются в каком-нибудь ряду.

  • Для каждой такой пары \((x_1, x_2)\) найдите количество рядов, в которых она обслуживается.

  • Для каждой такой пары \((x_1, x_2)\) найдите максимальное количество подряд идущих рядов, в которых она обслуживается. Другими словами, найдите максимальное число \(k\), такое что существует отрезок \(k\) подряд идущих рядов \([y_1, y_2]\) (\(y_2 - y_1 + 1 = k\)), такой что для любого ряда \(y_1 \leq y \leq y_2\), пара \((x_1, x_2)\) обслуживается в ряду \(y\).


Формат входных данных
Каждый тест состоит из нескольких наборов входных данных. В первой строке дано одно целое число \(t\) (\(1 \leq t \leq 200\,000\)) — количество наборов входных данных. Далее следуют описания наборов входных данных.

В первой строке каждого набора входных данных дано единственное целое число \(n\) (\(1 \leq n \leq 200\,000\))  — количество выбранных прямоугольных участков.

В следующих \(n\) строках дано по четыре целых числа \(x_i^{L}\), \(y_i^{L}\), \(x_i^{R}\), \(y_i^{R}\) (\(1 \leq x_i^{L} \leq x_i^{R} \leq 10^9\), \(1 \leq y_i^{L} \leq y_i^{R} \leq 10^9\)) — описания выбранных прямоугольных участков.

Обозначим за \(N\) сумму \(n\) по всем наборам входных данных в одном тесте. Гарантируется, что \(N \leq 200\,000\).

Формат выходных данных
Для каждого набора входных данных сначала выведите единственное целое число \(p\) (\(p \geq 1\)) — количество пар \((x_1, x_2)\), которые обслуживаются в каком-нибудь ряду.

В следующих \(p\) строках выведите по четыре целых числа \(x_1\), \(x_2\), \(cnt\), \(k\) (\(1 \leq x_1 \leq x_2 \leq 10^9\), \(0 \leq cnt, k \leq 10^9\)). Число \(cnt\) должно быть равно количеству рядов, в которых обслуживается пара \((x_1, x_2)\). Число \(k\) должно быть равно максимальному количеству подряд идущих рядов, в которых обслуживается пара \((x_1, x_2)\).

Все пары \((x_1, x_2)\) должны быть различны. Каждая пара, которая обслуживается в каком-нибудь ряду, должна быть выведена ровно один раз. Можно вывести пары в произвольном порядке.


Система оценки
Для набора входных данных обозначим за \(w\) ширину поля, то есть \(w = \max\limits_{i=1}^{n} x_i^{R}\), за \(h\) высоту поля, то есть \(h = \max\limits_{i=1}^{n} y_i^{R}\).

3-5 [0cm][0cm]Подз. [0cm][0cm]Баллы \(n\), \(N\) \(w, h\) дополнительно

[0cm][0cm]

Необх. подзадачи

 
1 4 \(n = 1\)        
2 8   \(h = 1\)      
3 8 \(n \leq 30\), \(N \leq 3000\) \(w, h \leq 10\) \(t \leq 100\) У  
4 4   \(w, h \leq 5000\), \(\sum wh \leq 25 \cdot 10^6\)   У, 3  
5 8 \(N \leq 3000\)     У, 3  
6 4 \(N \leq 10\,000\)     У, 3, 5  
7 8     все \([x_i^{L}, x_i^{R}]\) пересекаются 1  
8 8     \(y_i^{L} = 1\) 2  
9 8     прямоугольники не пересекаются 1  
10 8     \(\forall 1 \leq i, j \leq n\) \(\forall y \in [y_i^{L}, y_i^{R}] \cap [y_j^{L}, y_j^{R}]\) выполнено \([x_i^{L}, x_i^{R}] \nsubseteq [x_j^{L}, x_j^{R}]\) 1, 9  
11 8     все отрезки \([x_i^{L}, x_i^{R}+1]\) либо вложены, либо не пересекаются 1  
12 8 \(N \leq 50\,000\)     У, 3, 5 – 6  
13 8 \(N \leq 100\,000\)     У, 3, 5 – 6, 12  
14 8 \(N \leq 200\,000\)     У, 1 – 13  
  • Если для теста ваше решение неправильно находит множество пар \((x_1, x_2)\), которые обслуживаются в каком-нибудь ряду, решение получает вердикт <<Неправильный ответ>>.

  • Если во всех тестах подзадачи и необходимых подзадач решение

    • правильно находит множество, но не все \(cnt\) верны, оно получает \(50\%\) баллов за подзадачу.

    • правильно находит множество и все \(cnt\), но не все \(k\) верны, оно получает \(75\%\) баллов за подзадачу.

    • правильно находит множество, все \(cnt\) и все \(k\), оно получает \(100\%\) баллов за подзадачу.

Обратите внимание, что для получения частичных баллов за подзадачу, все равно необходимо вывести какие-нибудь значения \(cnt\) и \(k\) для каждой пары \((x_1, x_2)\), но не обязательно верные.

Пояснения к примерам

Первый и второй наборы входных данных для теста из условия

В первом наборе входных данных будут использоваться роботы на участках \((2, 3, 2)\), \((2, 4, 3)\), \((3, 4, 4)\). Таким образом, пары \((2, 3)\), \((2, 4)\), \((3, 4)\) обслуживаются в каком-нибудь ряду, причем каждая из них обслуживается ровно в одном ряду.

Во втором наборе входных данных будут использоваться роботы на участках \((2, 2, 1)\), \((2, 4, 2)\), \((2, 2, 3)\). Таким образом, пары \((2, 2)\), \((2, 4)\) обслуживаются в каком-нибудь ряду. Пара \((2, 2)\) обслуживается в рядах \(1, 3\), пара \((2, 4)\) обслуживается ряду \(2\).

Третий и четвертый наборы входных данных для теста из условия

Фермер Джон косит траву. Он перемещает комбайн один раз в день. В день 1 он начинает в позиции \((x_1, y_1)\) и в день \(d\) перемещается по прямой в позицию \((x_d, y_d)\), двигаясь или горизонтально или вертикально по 2D-карте своей фермы. То есть либо \(x_d = x_{d-1}\), либо \(y_d = y_{d-1}\). ФД чередует в последовательные дни горизонтальные и вертикальные участки. Он косит довольно медленно, поэтому может такое случится, что когда он вернётся в позицию, там уже снова вырастет трава. Точнее, если в какой-то ячейке трава была скошена в день \(d\), то она повторно вырастет в день \(d + T\), поэтому если ФД попал в какую-то ячейку, в которой уже был не менее, чем \(T\) днями раньше, то ему придётся снова косить там траву. ФД хочет посчитать, сколько раз такое случится.

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

ФОРМАТ ВВОДА (файл mowing.in):

Первая строка ввода содержит \(N\) (\(2 \leq N \leq 100,000\)) и \(T\) (\(1 \leq T \leq N\), \(T\) even). Следующие \(N\) строк описывают позицию комбайна в дни \(1 \ldots N\). i-ая из этих строк содержит целые числа \(x_i\) \(y_i\) (неотрицательные целые не более 1,000,000,000).

ФОРМАТ ВЫВОДА (файл mowing.out):

Выведите количество точек пересечения, описанных выше.

Беси анализирует строку из \(N\) (\(3 \leq N \leq 10^5\)) маленьких латинских букв \(s_1s_2 \ldots s_N\). Эльза рассматривает строку \(t\), содержащую три символа как MOO если \(t_2 = t_3\) и \(t_2 \neq t_1\).

Триплет \((i, j, k)\) валидный, если \(i < j < k\) и строка \(s_i s_j s_k\) формирует MOO. Для этого триплета ФД выполняет следующее, чтобы вычислить его величину

  • ФД сгибает строку \(s\) на 90-градусов в индексе \(j\)
  • Величина триплета - удвоенная площадь \(\Delta ijk\).

Другими словами, величина триплета есть \((j-i)(k-j)\).

Беси задаёт Вам \(Q\) (\(1 \leq Q \leq 3 \cdot 10^4\)) вопросов. В каждом вопросе она даёт Вам два целых числа \(l\) и \(r\) (\(1 \leq l \leq r \leq N\), \(r-l+1 \ge 3\)) и просит Вас определить максимальную величину среди всех валидных триплетов \((i, j, k)\) таких, что \(l \leq i\) и \(k \leq r\). Если валидных триплетов нет, выведите \(-1\).

Решение задачи может потребовать использовать 64-й целый тип (например, "long long" in C/C++).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит два целых числа \(N\) и \(Q\).

Следующая строка содержит символы \(s_1 s_2, \ldots s_N\).

Последующие \(Q\) строк содержат по два целых числа \(l\) и \(r\), обозначающих запрос.

ФОРМАТ ВЫВОДА (на экран / stdout):

Выведите ответ на каждый вопрос в отдельной строке.

Беси посадила траву на положительной вещественной прямой. У неё есть \(N\) (\(2\le N\le 2\cdot 10^5\)) различных сортов травы. И она посадит траву \(i\)-го сорта на интервале \([\ell_i, r_i]\) (\(0 < \ell_i < r_i \leq 10^9\)).

Известно, что сорт \(i\) растёт лучше, если есть некоторый сорт \(j\) (\(j\neq i\)) такой, что сорт \(j\) и сорт \(i\) перекрываются на длину не менее \(k_i\) (\(0 < k_i \leq r_i - \ell_i\)). Беси хочет для каждого сорта \(i\) вычислить количество таких of \(j\neq i\), что сорты \(j\) и \(i\) перекрываются на длину не менее \(k_i\).

ФОРМАТ ВВОДА (с клавиатуры / stdin):

Первая строка содержит число \(N\).

Каждая из последующих \(N\) строк содержит три разделённых одиночными пробелами целых числа \(\ell_i\), \(r_i\), \(k_i\).

ФОРМАТ ВЫВОДА (на экран / stdout):

Ответы для всех сортов на отдельных строках.

SCORING:

  • Тесты 4-5: \(N \leq 5000\)
  • Тесты 6-11: \(k\) одинаковое для всех интервалов
  • Тесты 12-20: Нет дополнительных ограничений..

В дополнение, в тестах 5, 7, ..., 19, \(r_i \leq 2N\) for all \(i\).

Автор: Benjamin Qi

\(N\) коров Фермера Джона бродят далеко от фермы. Ваша задача - собрать их в стадо.

Главное поле фермы представлено прямой, на которой каждая корова занимает некоторое положение в целочисленной координате. Изначально все \(N\) коров находятся в различных позициях. ФД хочет, чтобы они заняли соседние позиции (например 3,4,5,6,7,8).

В любой момент времени ФД может давать команду только одной из двух "крайних" коров (находящейся или в минимальной или в максимальной позиции среди всех коров). Когда ФД перемещает корову, он говорит ей перейти на любую незанятую позицию, так чтобы эта корова перестала быть крайней. Такие перемещения "сближают" коров вплоть до нужного результата.

Определите минимальное и максимальное количество таких перемещений, чтобы коровы заняли \(N\) последовательных позиций.

ФОРМАТ ВВОДА (файл herding.in):

Первая строка ввода содержит \(N\) (\(3 \leq N \leq 10^5\)). Каждая из следующих \(N\) строк содержит целое число (в интервале \(1 \ldots 10^9\)) - местоположение коровы.

ФОРМАТ ВЫВОДА (файл herding.out):

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

Фермер Джон получил груз из \(N\) больших стогов сена (\(1 \le N \le 100,000\)), и разместил стога в различных позициях вдоль дороги, соединяющей амбар с его домом. Каждый стог с номером \(j\) имеет размер \(S_j\) и находится в уникальной позиции \(P_j\) определяющей его положение вдоль одномерной дороги. Корова Беси расположена в настоящий момент в позиции \(B\),где нет стога сена. Беси может передвигаться вдоль дороги вплоть до позиции, где расположен стог сена, но она не может проходить эту позицию. Как исключение, если она движется в некотором направлении \(D\) единиц расстояния, то она набирает скорость достаточную чтобы уничтожить любой стог сена с размером строго меньше, чем \(D\). Конечно после того как она сделает это, она может бежать дальше к другим стогам и уничтожать их аналогичным способом.

ФД перекрасил дои и амбар и хочет быть уверенным, что Беси не доберётся ни туда, ни туда (Корова и свежая краска не есть хорошая комбинация!). Соответственно, ФД хочет быть уверенным, что Беси никогда не выйдет ни за самый левый, ни за самый правый стог. ФД может добавить сена в один стог по своему выбору, так чтобы гарантировать, что Беси не выберется. Пожалуйста, помогите ему определить минимальное количество дополнительного размера, который он должен добавить к некоторому стогу сена, чтобы гарантировать, что Беси останется в ловушке.

ФОРМАТ ВВОДА (файл trapped.in):

Первая строка ввода содержит \(N\) и начальную позицию Беси \(B\). Каждая из последующих \(N\) строк описывает стог и содержит два целых числа, определяющих его размер и местоположение. Все размеры и положения находятся в диапазоне \(1\ldots 10^9\).

ФОРМАТ ВЫВОДА (файл trapped.out):

Выведите одно целое число, определяющее минимальное количество сена, которое должен добавить ФД чтобы Беси не выбралась из ловушки. Выведите -1, если это сделать невозможно.

Photo#89909

ФД хочет сфотографировать все свои N коров (2 <= N <= 1,000,000,000), которые выстроились в линию и последовательно пронумерованы от 1 до N. Каждая фотография может вместить некоторый последовательный диапазон коров, и ФД хочет, чтобы каждая корова была, как минимум, на одной фотографии.
К несчастью, имеется K недружественных пар коров (1 <= K <= 1000), которые отказываются находиться на одной фотографии. Вам даны позиции этих недружественных пар коров, определите минимальное количество фотографий, которые придется сделать ФД.
PROBLEM NAME: photo
Формат входных данных
* Строка 1: Два разделенных пробелом целых числа, N и K.
* Строки 2..K+1: Строка i+1 содержит два целых числа, Ai и Bi, указывающих, что коровы на позициях Ai и Bi недружественные, и поэтому не могут быть на одной и той же фотографии.
Формат выходных данных
* Файл 1: Одно целое число, указывающее минимальное количество фотографий, которые должен сделать ФД
Примечание
ФД должен сделать 3 фотографии: - Одна в диапазоне от 1 до 2. - Одна в диапазоне от 3 до 5. - Одна в диапазоне от 6 до 7.

Корова Беси красит забор Фермеру Джону. Беси начинает в позиции 0 и выполняет последовательность из N инструкций. (1 <= N <= 100,000) вида "10 L", что означает покрасить 10 единиц влево и "15 R", что означает покрасить 15 единиц вправо.
Бесси может уйти не далее чем на 1,000,000,000 единиц от исходной точки.
По имеющей инструкции ФД хочет узнать область забора, которая покрашена как минимум двумя слоями краски.

PROBLEM NAME: paint
Формат входных данных
* Строка 1: Целое N
* Строки 2..1+N: Каждая строка описывает одну из N инструкций
Формат выходных данных
* Строка 1: Общая часть, покрашенная как минимум 2 слоями краски.
Примечание
6 единиц покрыто как минимум 2 слоями краски. Это интервалы: [-11,-8], [-4,-3], [0,2].


Фермер Джон купил новую машину, которая умеет садить траву в прямоугольном регионе со сторонами, параллельными осям координат. К несчастью, эта машина однажды сломалась и посадила траву не в одном, а в N (1 <= N <= 1000) различных регионах, некоторые из которых могут даже перекрываться.
По заданным прямоугольным регионам, засаженным травой, помогите ФД определить общую площадь, покрытую травой.
PROBLEM NAME: planting
Формат входных данных
* Строка 1: Целое число N.
* Строки 2..1+N: Каждая строка содержит четыре разделенных одиночными пробелами целых числа x1 y1 x2 y2 указывающих прямоугольный регион с верхним - левым углом (x1,y1) и нижним – правым углом (x2,y2). Все координаты – целые числа в диапазоне -10^8...10^8..
Формат выходных данных
* Строка 1: Общая площадь, покрытая травой. Заметим, что общая площадь может быть настолько большой, что не поместиться в 32-битное целое.
Фермер Джон купил новую машину, которая умеет садить траву в прямоугольном регионе со сторонами, параллельными осям координат. К несчастью, эта машина однажды сломалась и посадила траву не в одном, а в N (1 <= N <= 10) различных регионах, некоторые из которых могут даже перекрываться.
По заданным прямоугольным регионам, засаженным травой, помогите ФД определить общую площадь, покрытую травой.
PROBLEM NAME: planting

Формат входных данных
* Строка 1: Целое число N.
* Строки 2..1+N: Каждая строка содержит четыре разделенных одиночными пробелами целых числа x1 y1 x2 y2 указывающих прямоугольный регион с верхним - левым углом (x1,y1) и нижним – правым углом (x2,y2). Все координаты – целые числа в диапазоне -10,000...10,000.

Формат выходных данных
* Строка 1: Общая площадь, покрытая травой.

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

Для этого Магане может один раз выбрать произвольный набор различных позиций в массиве и заменить элементы на этих позициях на противоположные, то есть умножить их на \(-1\). Например, чтобы сделать массив \([-4, 4, 1, 3, -10]\) отсортированным, она может умножить на \(-1\) числа на позициях \(2\) и \(5\), и получить массив \([-4, -4, 1, 3, 10]\).

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

Помогите ей с этой задачей! Поскольку итоговое количество способов может быть слишком большим, найдите ответ по модулю \(998244353\).

В первой строке ввода записано целое число \(n\) — количество элементов в массиве (\(1 \leqslant n \leqslant 10^6\)).

Формат входных данных
Во второй строке через пробел перечислены \(n\) целых чисел \(a_1\), \(a_2\), …, \(a_n\) — элементы массива (\(-10^9 \leqslant a_i \leqslant 10^9\)).

Формат выходных данных
Выведите одно число — количество способов отсортировать массив указанным образом (по модулю \(998244353\)).

 

Недавно в город приехал известный цирк. Всего в этом цирке \(n\) акробатов, и в этот раз в честь проведения СПбКОШП 2022 они подготовили особенный номер.

Известно, что \(i\)-й акробат имеет рост \(a_i\) и вес \(b_i\). Любые три акробата могут собраться вместе и показать необычный трюк. Если трюк показывают акробаты с номерами \(i\), \(j\) и \(k\), то эффектность трюка оценивается как \(a_i b_j + a_j b_k + a_k b_i\).

Тренер акробатов считает упорядоченную тройку акробатов \((i, j, k)\) хорошей, если эффектность их трюка будет не меньше, чем если они расположатся в обратном порядке \((k, j, i)\).

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

Формат входных данных
В первой строке ввода дано целое число \(n\) — количество акробатов в цирке (\(3 \leqslant n \leqslant 1000\)).

В \(i\)-й из следующих \(n\) строк через пробел даны целые числа \(a_i\) и \(b_i\) — рост и вес \(i\)-го акробата (\(1 \leqslant a_i, b_i \leqslant 10^9\)).

Формат входных данных

Выведите через пробел \(n\) различных целых чисел от \(1\) до \(n\) — номера акробатов в том порядке, в котором их стоит расположить в ряду.

Одна из центральных площадей Архангельска замощена прямоугольными плитками размера \(1 \times k\). Если ввести систему координат, так что левый нижний угол одной из плиток будет иметь координаты \((0, 0)\), то левые нижние углы плиток будут иметь координаты \((i \cdot k+j,j)\) для всех целых \(i\) и \(j\).

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

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

Требуется написать программу, вычисляющую минимальное количество плиток, которые придётся .

Входные данные
Первая строка входных данных содержит два числа \(n\) и \(k\) — количество вершин в основании памятника и размер плитки.

Каждая из последующих \(n\) строк содержит два целых числа \(x_i\), \(y_i\) — координаты \(i\)-й вершины основания. Координаты перечислены в порядке обхода против часовой стрелки.

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

Замечание

Вдоль прямой улицы через каждый метр расположены фонарные столбы. На каждом столбе написан номер метра, на котором он расположен. Первый столб расположен в начале улицы и имеет номер 0. 

Код Рудольф гуляет вдоль улицы, от фонаря с номером a до фонаря с номером b. Полосатый кот Ихмиллион прогуливается от фонаря с номером c до фонаря с номером d. Определите, количество фонарных столбов, мимо которых проходя оба кота.



Входные данные
Вводятся четыре числа в одной строке через пробел: a, b, c, d (0 < a, b, c, d <= 100). 

Выходные данные
Выведите ответ на задачу.
 
Примеры
Входные данные Выходные данные Пояснение
1 5 8 6 2 2 Рудольф прогуливается от фонаря с номером 5 до  8-го фонаря и обратно, а Ихмиллион со 6-го по 2-й и обратно. Одновременно оба кота прогуливаются мимо фонарей с номерами 5 и 6. Всего фонарей два.
2 5 3 7 9 0 Нет общих фонарей, мимо которых прогуливаются оба кота.
Вдоль прямой улицы через каждый метр расположены фонарные столбы. На каждом столбе написан номер метра, на котором он расположен. Первый столб расположен в начале улицы и имеет номер 0. 

Код Рудольф гуляет вдоль улицы, от фонаря с номером a до фонаря с номером b. Полосатый кот Ихмиллион прогуливается от фонаря с номером c до фонаря с номером d. Определите, количество фонарных столбов, мимо которых проходя оба кота.



Входные данные
Вводятся четыре числа в одной строке через пробел: a, b, c, d (0 < a, b, c, d <= 100). 

Выходные данные
Выведите ответ на задачу.
 
Примеры
Входные данные Выходные данные Пояснение
1 5 8 6 2 2 Рудольф прогуливается от фонаря с номером 5 до  8-го фонаря и обратно, а Ихмиллион со 6-го по 2-й и обратно. Одновременно оба кота прогуливаются мимо фонарей с номерами 5 и 6. Всего фонарей два.
2 5 3 7 9 0 Нет общих фонарей, мимо которых прогуливаются оба кота.
Алиса и Боб управляют роботом. У каждого из них есть по одной кнопке, которая управляет роботом. Алиса начала удерживать кнопку через A секунд после запуска робота и отпустила кнопку  через B секунд после запуска. Боб начал удерживать кнопку через секунд после запуска и отпустил кнопку через D секунд после запуска. Сколько секунд Алиса и Боб удерживали свои кнопки одновременно?

Входные данные
На вход 4 целых числа: A, B, C и (\(1<=A<B<=100\)\(1<=C<D<=100\)).

Выходные данные
Выведите продолжительность времени (в секундах), в течение которого Алиса и Боб удерживали свои кнопки одновременно.
 

 

Примеры
Входные данные Выходные данные Пояснения
1 0 75 25 100 50 Алиса начала удерживать кнопку через 0 секунд после запуска робота и отпустила ее через 75 секунд после запуска.
Боб начал удерживать кнопку через 25 секунд после запуска и отпустил ее через 100 секунд после запуска.
Следовательно, время, когда они оба удерживали свои кнопки, составляет 50 секунд от 25 секунд после запуска до 75 секунд после запуска.
2 0 33 66 99 0 Алиса и Боб не удерживали кнопки одновременно, поэтому ответ - ноль секунд.
3 10 90 20 80 60  

 

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

Входные данные
Вводятся четыре числа, не превосходящие 100, задающие номера конечных остановок. Сначала для первого, потом второго автобуса (см. примеры и рисунок).

Выходные данные
Ваша программа должна выводить одно число – искомое количество остановок.
Примеры
Входные данные Выходные данные Пояснение
1 3 6 4 2 2 первый автобус ходит с 3-й остановки по 6-ю и обратно, а второй с 2-й по 4-ю и обратно. Пересесть с одного автобуса на другой можно на 3-й и 4-й остановках. Их две.
2 3 1 5 10 0 автобусы не имеют общих остановок.
В ряд выписаны натуральные числа от 1 до n и задано натуральное число k.
Выполняется один или несколько шагов по удалению чисел в этом ряду. На
очередном шаге оставшиеся числа просматриваются в возрастающем порядке, и каждое k-е число удаляется. Если после очередного шага осталось меньше k чисел, то процесс удаления чисел завершается.
Необходимо определить, на каком шаге будет удалено число n, или выяснить, что оно не будет удалено до завершения процесса.
Например, пусть n = 13, k = 2.
- На первом шаге будут удалены числа 2, 4, 6, 8, 10 и 12, останутся числа 1, 3, 5, 7, 9, 11 и 13.
- На втором шаге будут удалены числа 3, 7 и 11, останутся числа 1, 5, 9 и 13.
- На третьем шаге будут удалены числа 5 и 13, останутся числа 1 и 9.
- На четвертом шаге будет удалено число 9, останется число 1. Поскольку осталось одно число, процесс завершается.
Таким образом, число 13 будет удалено на третьем шаге.
Требуется написать программу, которая по заданным числам n и k определяет, на каком шаге будет удалено число n.
Формат входных данных
Первая строка входных данных содержит целое число n (3 ≤ n ≤ 1018).
Вторая строка входных данных содержит целое число k (2 ≤ k ≤ 100, k < n).
Формат выходных данных
Требуется вывести одно целое число — номер шага, на котором будет удалено число n, или число 0, если число n не будет удалено.
 
Ввод Вывод
13
2
3


 
Дед Мороз очень любит раздавать «подарочки» и если он долго их не раздаёт, то начинает грустить и поедать печеньки (не факт, что печеньки не олени). И он начинает толстеть, но когда он дарит хотя бы один подарочек, то возвращается к начальному весу (Т-Т ©Маша). На какой максимальный вес потолстеет Дед Мороз, если на одном отрезке он дарит по 1 подарку на каждый целый индекс, а всего он обойдёт m домов. Даны n отрезков пути для Деда Мороза на его траектории раздачи подарочков и сами отрезки. Также дано количество домов, которое он обойдёт.
Изначальный вес Деда Мороза 227 ± 1 кг.

Ввод Вывод
3 12
2 6
3 9
3 4
3
(с) Манаев В., Кашукова М., 2018 г.
Однажды, вернувшись в свою башню, Мерлин обнаружил, что Моргана наложила проклятие на
все его сосуды с эликсиром мудрости.
Мерлин знает, как снять проклятие, но соответствующее заклинание требует, чтобы во всех
сосудах, к которым оно применяется, было равное количество эликсира.
Чтобы добиться этого, Мерлин решил действовать следующим образом. Он выбирает несколько
сосудов и переливает весь эликсир из выбранных сосудов в оставшиеся. Он может распределить
переливаемый эликсир между оставшимися сосудами произвольным образом. После того, как весь
эликсир из выбранных сосудов перелит, Мерлин разбивает опустошенные сосуды (с них проклятие
уже не снять), выбрасывает осколки и применяет заклинание снятия проклятия к оставшимся
сосудам.
Помогите волшебнику узнать, какое наименьшее количество сосудов ему придется разбить,
чтобы снять проклятие Морганы.
Формат входных данных
В первой строке входного файла находится число n (2 ≤ n ≤ 105) — количество сосудов. Во
второй строке содержатся n чисел a1, a2, . . . , an (1 ≤ ai ≤ 109) — количество литров эликсира
мудрости в каждом сосуде.
Формат выходных данных
Выведите в выходной файл минимальное количество сосудов, которые Мерлину придется
разбить.

Пример
Ввод
3
2 3 2
Вывод
1

Ввод:
4
4 4 4 4
Вывод
0

Ввод
5
1 2 3 4 5
Вывод
2

 
В первом примере можно, например, перелить 0.5 литра эликсира из первого сосуда во второй
и 1.5 литра в третий, после чего разбить первый сосуд.
Во втором сосуды исходно содержат равное количество эликсира, можно ничего не переливать.
В третьем примере можно, например, перелить 1 литр эликсира из первого сосуда во второй, по
2 литра из пятого во второй и третий, 1 литр из пятого в четвертый, после чего разбить первый и
пятый сосуды.
Поделиться
Класснуть