Информатика

4 314 задачвместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Дано число N (\(1<=N<=1000\)), а затем N натуральных чисел из диапазона от 1 до 100.
Вывести перестановку элементов массива, на которой быстрая сортировка выполнит максимальное число сравнений, при условии, что "опорным" будет элемент посередине. 

Входные данные 
В первой строке задаётся число N.

Выходные данные
Выведите требуемую перестановку чисел от 1 до N, на которой быстрая сортировка выполнит максимальное число сравнений.
 
Примеры
Входные данные Выходные данные
1 5 1 4 5 3 2
 
Пояснение
Худшее время работы достигается когда массив разбивается так, что одна часть содержит n−1 элементов, а вторая — 1. Этого можно добиться если на каждом этапе разбиения в середине будет максимальный элемент.
1) 1 4 5 3 2
2) 1 4 2 3 5
3) 1 3 2 4 5
4) 1 2 3 4 5
5) 1 2 3 4 5

 
На некоторых кросс-платформенных станциях метро (как, например, "Третьяковская") на разные стороны платформы приходят поезда разных направлений. Таня договорилась встретиться с подругой на такой станции, но поскольку подруга приехала из другого часового пояса, то из-за джетлага сильно проспала, и Тане пришлось долго её ждать. Поезда всегда ходят точно по расписанию, и Таня знает, что поезд стоит на платформе ровно одну минуту, а интервал между поездами (время, в течение которого поезда у платформы нет) составляет a минут для поездов на первом пути и b минут для поездов на втором пути. То есть на первый путь приезжает поезд и стоит одну минуту, затем в течение a минут поезда у платформы нет, затем в течение одной минуты у платформы стоит следующий поезд и т. д.

Пока Таня стояла на платформе, она насчитала n поездов на первом пути и m поездов на втором пути. Определите минимальное и максимальное время, которое Таня могла провести на платформе, или сообщите, что она точно сбилась со счёта.

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

Входные данные
Первая строка входных данных содержит число a - интервал между поездами на первом пути. Вторая строка содержит число b - интервал между поездами на втором пути. Третья строка содержит число n - количество поездов на первом пути, которые увидела Таня. Четвёртая строка
содержит число m - количество поездов на втором пути, которые увидела Таня. Все числа - целые,
от 1 до 1000.

Выходные данные
Программа должна вывести два числа: минимальное и максимальное время в минутах, которое Таня могла стоять на платформе, или одно число -1, если Таня точно ошиблась.
 
Ввод Вывод
1
3
3
2
5 7
1
5
1
2
-1

Замечание: В первом примере по первому пути поезда ходят через 1 минуту. По второму - через 3. Стоя на платформе 5, 6 или 7 минут, Таня могла насчитать 3 поезда на первом пути и 2 на втором.
 
На вход программе подаются два целых числа n, m, (\(0<n<=12, 0<=m<60\)), указывающие момент времени "n часов m минут". Определите наименьшее число полных минут, через которое часовая и минутная стрелки расположатся на циферблате перпендикулярно друг другу. Вещественную арифметику не использовать.

Входные данные: на вход подаются два числа через пробел.
Выходные данные: выведите на экран одно число, ответ к задаче.
 
Примеры
Входные данные Выходные данные
1 2 50 10
2 12 0  16
Иван-дурак (Иванушка-дурачок) — один из популярнейших героев русских, а также белорусских и украинских волшебных сказок. Иван-дурак на самом деле не глупый, а всего лишь последний ребенок в семье. Поскольку он третий сын, ему не положена доля в наследстве. Любил Иван в свободное время пострелять из лука. Запуская очередной раз стрелы, Иван решил посмотреть, какую фигуру они образуют, если соединить точки падения стрел. Хоть Иван и не глуп, но в вашей помощи все-таки нуждается.
Известны координаты трех точек на плоскости, куда упали стрелы Ивана. Определите взаимное расположение стрел.

Входные данные: На вход программе подаются 6 чисел: x1, y1, x2, y2, x3, y3. Все числа целые, по модулю не превосходят 100. Они задают 3 точки плоскости: a(x1, y1), b(x2, y2), c(x3, y3).
Выходные данные: Следует определить взаимное расположение точек и выдать на экран код ситуации:

0 — 3 точки совпадают;
1 — ровно 2 точки из трех совпадают;
2 — точки не совпадают, лежат на одной прямой;
3 — точки образуют остроугольный треугольник;
4 — точки образуют прямоугольный треугольник;
5 — точки образуют тупоугольный треугольник.

 
Примеры
Входные данные Выходные данные
1 1 1 1 1 1 1 0
2 0 0 3 0 0 4 4

Натуральные числа записаны в (бесконечную) таблицу, как показано на рисунке.

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

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

Примеры
Входные данные Выходные данные
1 1 3
2 7 3 6 8 13

Сегодня в индийском городке Старый Гоа отмечают День святого Франциска Ксавьера. Святой Франциск Ксавьер – миссионер, член ордена иезуитов, считается величайшим католическим миссионером Нового времени.
Мощи святого Франциска Ксавьера – духовного покровителя индийских христиан – покоятся в Старом Гоа в известном католическом храме – Базилике Бом Иисус. Со дня постройки храма в 1605 году раз в десять лет мощи святого выставляются для всеобщего обозрения.
Индийский крестьянин Вирмарам  – человек очень набожный, он не упускал случая коснуться святых мощей. Зная годы его жизни, определите, сколько раз он мог коснуться святых мощей (считается, что в год своего рождения он не мог этого сделать, а в год смерти – мог).

Входные данные: Вводятся два натуральных числа – год рождения и год смерти. Числа разделены пробелом. Оба числа не превосходят 2000.
Выходные данные: Программа должна  определить, сколько раз крестьянин мог коснуться святых мощей,  и вывести ответ - одно число.

Примеры
Входные данные Выходные данные
1 1610 1640 3
2 1615 1645 3

 

На вход даются числа nrc. Выведите массив размера n на n, в котором в строке r и столбце c стоят 1, а остальные числа равны 0 (используйте тип np.int8).

Пример
Входные данные Выходные данные
1 5 1 3 [[0 0 0 1 0]
 [1 1 1 1 1]
 [0 0 0 1 0]
 [0 0 0 1 0]
 [0 0 0 1 0]]
✓ 1✗ 41 000средняяВойти и решать
На вход подаётся 2 списка целых чисел (они представляют из себя вектора равной длины, т.е. с одинаковым количеством элементов).

Используя векторные операции создайте и сохраните в переменную V Numpy вектор с покоординатными произведениями каждого второго числа из первого списка на каждое второе число из второго списка, развёрнутого в обратном порядке
Выведите данный вектор на экран.

Примеры
Входные данные Выходные данные
1 1 2 3 4
10 20 30 40
[40 60]
✓ 1✗ 81 000средняяВойти и решать
Джоан Роулинг, Гарри Поттер и актер Дэниел Рэдклифф все родились в один день – 31 июля. Одно из любимых времен года - зима

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

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

Входные данные: Cначала вводится число N – общее количество рассматриваемых дней (1 <= N <= 100).
В следующих N строках задается по одному целому числу. Каждое число – среднесуточная температура в соответствующий день. Температуры – целые числа, принадлежащие диапазону от –50 до 50.

Выходные данные: Требуется вывести одно число – длину самой продолжительной оттепели, то есть наибольшее количество последовательных дней, на протяжении которых среднесуточная температура превышала 0 градусов. Если температура в каждый из дней была неположительной, выведите 0.

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

1) Рассматриваются 6 дней. Самая продолжительная оттепель была на 4-й и 5-й день (50 и 10 градусов соответственно)
2) Самая продолжительная оттепель была в первые 4 дня
3) Дней с положительной температурой не было

Примеры

Входные данные Выходные данные
1 6
-20
30
-40
50
10
-10
 
2
2 8
10
20
30
1
-10
1
2
3
 
4
3 5
-10
0
-10
0
-10
0
✓ 2✗ 291 100средняяВойти и решать
«Ночной рыцарь» – автобус для ведьм и волшебников, попавших в трудное положение. 
«Ночной рыцарь» поражает своими размерами. Небольшой по длине, в высоту он значителен. Гигантские колеса, три этажа. Цвет машины – ярко-фиолетовый.
Автобус обладает несколькими волшебными свойствами. Во-первых, он возникает тут же, по первому требованию, в любом месте и в любое время. Волшебнику даже не приходится ждать. Оборудованные остановки «Ночному рыцарю» не нужны.

Любители Гарри Поттера решили организовать экскурсию по городу на оформленном под "Ночного рыцаря" автобусе. Автобус был высотой 437 сантиметров. На экскурсионном маршруте встречаются N мостов. Организаторы обеспокоились тем, что высокий автобус может не проехать под одним из них. Они знают высоту каждого из мостов. Автобус может проехать под мостом тогда и только тогда, когда высота моста превосходит высоту автобуса. Помогите организаторам узнать, закончится ли экскурсия благополучно, а если нет, то установить, где произойдет авария.
 
Входные данные: В первой строке ввода подается число N (1<=N<=1000). Далее идут N натуральных чисел (по одному числу в строке), не превосходящих 10000 - высоты мостов в сантиметрах в том порядке, в котором они встречаются на пути автобуса.
Выходные данные: Нужно вывести фразу "No crash", если экскурсия закончится благополучно. Если же произойдет авария, то нужно вывести сообщение "Crash k", где k - номер моста, где произойдет авария. Фразы выводить без кавычек ровно с одним пробелом внутри.
 
Примеры
Входные данные Выходные данные
1 1
927
No crash
2 3
763
545
113
Crash 3
✓ 6✗ 44900средняяВойти и решать

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

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

Входные данные: В первой строке вводится число n - количество селений (1 <= n <= 100000). Вторая строка содержит n различных целых чисел, i-е из этих чисел задает расстояние от начала дороги до i-го селения. В третьей строке входных данных задается число m - количество бомбоубежищ (1 <= m <= 100000). Четвертая строка содержит m различных целых чисел, i-е из этих чисел задает расстояние от начала дороги до i-го бомбоубежища. Все расстояния положительны и не превышают 109. Селение и убежище могут располагаться в одной точке.

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

Примеры
Входные данные Выходные данные
1 4
1 2 6 10
2
7 3
2 2 1 1

После затянувшегося совещания директор фирмы решил заказать такси, чтобы развезти сотрудников по домам. Он заказал N машин  – ровно столько, сколь у него сотрудников. Однако когда они подъехали, оказалось, что у каждого водителя такси свой тариф за 1 километр.

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


Входные данные: Первая строка входных данных содержит натуральное число N (1 ≤ N ≤ 1000)  – количество сотрудников компании (совпадающее с количеством вызванных машин такси). Далее записано N чисел, задающих расстояния в километрах от работы до домов сотрудников компании (первое число  – для первого сотрудника, второе  – для второго и т.д.). Все расстояния  – положительные целые числа, не превышающие 1000. Далее записано еще N чисел  – тарифы за проезд одного километра в такси (первое число  – в первой машине такси, второе  – во второй и т.д.). Тарифы выражаются положительными целыми числами, не превышающими 10000. 

Выходные данные: Программа должна вывести N чисел. Первое число – номер такси, в которое должен сесть первый сотрудник, второе число – номер такси, в которое должен сесть второй и т.д., чтобы суммарные затраты на такси были минимальны. Если вариантов рассадки сотрудников, при которых затраты минимальны, несколько, выведите любой из них.

Примеры
Входные данные Выходные данные
1 3
10 20 30
50 20 30
1 3 2
2 5
10 20 1 30 30
3 3 3 2 3
5 1 3 2 4

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

Входные данные 
В первой строке вводится число n - количество роботов(\(1 <= n <= 100000\)). Вторая строка содержит n различных целых чисел, i-е из этих чисел задает расстояние от начала дороги до места работы i-го робота. В третьей строке входных данных задается число m - количество ремонтных мастерских (1 <= m <= 100000). Четвертая строка содержит m различных целых чисел, i-е из этих чисел задает расстояние от начала дороги до i-й ремонтной мастерской. Все расстояния положительны и не превышают 109.  Робот и мастерская могут располагаться в одной точке.

Выходные данные
Выведите n чисел - для каждого робота выведите номер ближайшей к нему ремонтной мастерской. Ремонтные мастерские пронумерованы от 1 до m в том порядке, в котором они заданы во входных данных.

 
Примеры
Входные данные Выходные данные
1 4
1 2 6 10
2
7 3
2 2 1 1
12.25н#37075
Даны числа n и m. Создайте массив A[n][m] и заполните его, как показано на примере.

Формат входных данных
Программа получает на вход два числа n и m.

Формат выходных данных
Программа должна вывести полученный массив. Элементы строки должны разделяться одним пробелом, кроме этого, одно число необходимо записывать в трех знакоместах.
 
Примеры
Входные данные Выходные данные
1 4 5
 17  16   9   8   1 
 18  15  10   7   2 
 19  14  11   6   3 
 20  13  12   5   4 

У Фили есть квадратная матрица \(A\) размера \(N \times N\), но она кажется ему слишком большой. Ему гораздо больше нравятся матрицы размера \(k \times k\) (\(k < N\)).

Филя хочет получить матрицу нужного размера взяв некоторую подматрицу исходной матрицы. Подматрицей \(k \times k\) матрицы \(A\) в данном случае Филя считает матрицу \(B\) такую, что \(b_{i, j} = a_{i + x, j + y}\), для всех \(i\), \(j\) от \(1\) до \(k\). Из данного определения можно заметить, что подматрица исходной матрицы задается парой чисел (\(x\), \(y\)).

Для того, чтобы выбрать наиболее интересную для себя подматрицу, Филя хочет узнать, сколько есть способов выбрать из исходной матрицы две различные (характеризующие пары (\(x\), \(y\)) отличаются хотя бы в одной позиции) равные подматрицы \(k \times k\). Две матрицы \(Q\) и \(P\) размера \(k \times k\) считаются равными, если для любых \(i, j: 1 \le i, j \le k\) выполняется \(q_{i, j} = p_{i, j}\). Если условия равенства не выполняется, матрицы считаются неравными.

Формат входных данных
В первой строке входного файла содержатся два натуральных числа \(N\) и \(k\) — размеры исходной и нужной матрицы. (\(1 \le k < N \le 10\)). В следующих \(N\) строках заданы через пробел по \(N\) натуральных чисел \(a_{i, j}\) — элементы исходной матрицы (\(1 \le a_{i, j} < 10\)).

Формат выходных данных
В единственной строке выходного файла выведите одно число — количество способов выбрать из исходной матрицы две различные равные подматрицы размера \(k \times k\).

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

1. Можно увеличить первую цифру числа на 1, если она не равна 9.
2. Можно уменьшить последнюю цифру на 1, если она не равна 1.
3. Можно циклически сдвинуть все цифры на одну вправо.
4. Можно циклически сдвинуть все цифры на одну влево.

Например, применяя эти правила к числу 1234 можно получить числа 2234, 1233, 4123 и 2341 соответственно. Точные правила игры Витя пока не придумал, но пока его интересует вопрос, как получить из одного числа другое за минимальное количество операций.


Входные данные: на вход подаются два различных четырехзначных числа, каждое из которых не содержит нулей. Каждое число с новой строки

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

Примеры
Входные данные Выходные данные
1 1234
4321
1234
2234
3234
4323
4322
4321

На прямой тропинке на расстоянии 1 метр друг от друга сидят два кузнечика. Время от времени один из кузнечиков прыгает на несколько сантиметров влево или вправо. Требуется узнать, каково было минимальное расстояние, на которое сближались кузнечики в процессе прыжков. (Расстояние считается только в те моменты, когда оба кузнечика сидят на земле).

Входные данные: В первой строке вводится одно число N (1 <= N <= 100) – общее количество прыжков, а затем N чисел, описывающих прыжки. Модуль числа равен длине прыжка в сантиметрах; число отрицательное, если кузнечик начинал этот прыжок по направлению к другому кузнечику, и положительное – если от другого кузнечика. Числа по модулю не превосходят 100 и все отличны от 0. (Кузнечики могут перепрыгивать друг через друга. Гарантируется, что кузнечики не приземляются друг на друга.)

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

Примеры
Входные данные Выходные данные
1 5
1
2
3
4
5
100
✓ 82✗ 314800средняяВойти и решать

Вася записывает в клетки квадратной таблицы NxN натуральные числа по порядку, сначала заполняя первую строку слева направо, затем вторую и т.д. (см. рисунок слева). Петя заполняет такую же таблицу, расставляя числа сначала в первый столбец сверху вниз, затем во второй столбец и т.д.

1

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

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


Входные данные 
Вводится одно число - размер таблицы.

Выходные данные 
Программа должна вывести все числа, которые в обеих таблицах стоят на одном и том же месте, в порядке возрастания, через пробел.

Размер таблицы - натуральное число, не превосходящее 100.

Примеры
Входные данные Выходные данные
1 4 1 6 11 16
✓ 73✗ 84800средняяВойти и решать
Формат XML является распространенным способом обмена данными между различными программами. Недавно программист Иванов написал небольшую программу, которая сохраняет некоторую важную информацию в виде XML-строки.

XML-строка состоит из открывающих и закрывающих тегов.

Открывающий тег начинается с открывающей угловой скобки (<), за ней следует имя тега — непустая строка из строчных букв латинского алфавита, а затем закрывающая угловая скобка (>).
Примеры открывающих тегов: <a>, <dog>.

Закрывающий тег начинается с открывающей угловой скобки, за ней следует прямой слеш (/), затем имя тега — непустая строка из строчных букв латинского алфавита, а затем закрывающая угловая скобка.
Примеры закрывающихся тегов: </a>, </dog>.

XML-строка называется корректной, если она может быть получена по следующим правилам:
  • Пустая строка является корректной XML-строкой.
  • A и B — корректные XML-строки, то строка AB, получающаяся приписыванием строки B в конец строки A, также является корректной XML-строкой.
  • Если A — корректная XML-строка, то строка <X>A</X>, получающаяся приписыванием в начало A открывающегося тега, а в конец — закрывающегося с таким же именем, также является корректной XML-строкой. Здесь X — любая непустая строка из строчных букв латинского алфавита.
Например, представленные ниже строки:
<a></a>
<a><ab></ab><c></c></a>
<a></a><a></a><a></a>
являются корректными XML-строками, а такие строки как:
<a></b>
<a><b>
<a><b></a></b>
не являются корректными XML-строками.

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

Входные данные: Входной файл содержит одну строку, которая заменой ровно одного символа может быть превращена в корректную XML-строку. Длина строки лежит в пределах от 7 до 1000, включительно. Строка содержит только строчные буквы латинского алфавита и символы «<» (ASCII код 60), «>»(ASCII код 62) и «/»(ASCII код 47).
Строка во входном файле заканчивается переводом строки.

Выходные данные: Выходной файл должен содержать корректную XML-строку, которая может быть получена из строки во входном файле заменой ровно одного символа на другой. Если вариантов ответа несколько, можно вывести любой.
 
Примеры
Входные данные Выходные данные
1 <a></b> <a></a>
2 <a><aa> <a></a>
3 <a><>a> <a></a>
4 <a/</a> <a></a>
✓ 26✗ 1331 100средняяВойти и решать
Одна из Сверхсекретных организаций, чье название мы не имеем право разглашать, представляет собой сеть из N подземных бункеров, соединенных равными по длине туннелями, по которым из любого бункера можно добраться до любого другого (не обязательно напрямую). Связь с внешним миром осуществляется через специальные засекреченные выходы, которые расположены в некоторых из бункеров.

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

Формат входных данных
В первых двух строках вводятся два натуральных числа N, K (\(1 <= N <= 100000\), \(1 <= K <= N\)) — количество бункеров и количество выходов соответственно. В третьей строке через пробел записаны K различных чисел от 1 до N, обозначающих номера бункеров, в которых расположены выходы. В четвертой строке идёт число M (\(1 <= M <= 100000\)) — количество туннелей. В следующих M  строках вводятся пары чисел – номера бункеров, соединенных туннелем.
По каждому из туннелей можно двигаться в обе стороны. В организации не существует туннелей, ведущих из бункера в самого себя, зато может существовать более одного туннеля между парой бункеров.

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