Алгоритмы сортировки

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

Фермер Джон поддерживает алфавитно упорядоченный список имен своих N
(1 <= N <= 50,000) коров. Каждое имя коровы представлено уникальной
строкой от 1 до 20 маленьких латинских символов.

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

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

PROBLEM NAME: scramble

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

* Строка 1: Одно целое число N.

* Строки 2..1+N: Каждая из этиз строк содержит реорганизованное имя
одной из коров

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

* Строки 1..N: Строка i должна указывать, для входной строки i,
самую маленькую и самую большую позицию в исходном списке
на котором могла быть оригинальная версия строки i.

Примечание

Строка 'a' может быть только первой, а строка 'xyz' - только последней,
вне зависимости как переупорядочены их буквы .
Строки "essieb" и "elsie" могут занимать 2 или 3-ю позицию в зависимости
от той буквы, которая была первой в оригинальном имени:
например "bessie" (позиция 2) и "bessie" (позиция 3)
и наоборот
"sisbee" (позиция 3) и "ilees" (позиция 2)).

Moo Sick#89799

Problem 3: Moo Sick [Rob Seay]
Каждый знает, что коровы любят слушать музыку. Великий композитор Мууцарт однажды открыл, некоторые последовательности нот действуют на коров угнетающе. Поэтому их нужно избегать во всех композициях для коров.
Фермер Джон, не знакомый с этим фактом, решил проигрывать свою любимую песню через громкоговорители в амбаре. Ваша задача – определить все угнетающие последовательности нот в его песне, чтобы оценить, насколько она вредна для коров.
Песня, которую озвучивает ФД, представляет собой последовательность из N нот, каждая в диапазоне от 1 до 88. Угнетающая последовательность состоит из С (1<=C<=10) различных нот, также целых чисел от 1 до 88. Однако, если ноты транспонированы (увеличены или уменьшены на одну и ту же величину), или переупорядочены, то эта последовательность нот все равно остается угнетающей. Например, если «4 6 7» - угнетающая последовательность нот, то последовательности «3 5 6» (транспонирована на -1), «6 8 9» (транспонирована на +2), «6 4 7» (переупорядочена), «5 3 6» (транспонирована и переупорядочена) , также являются угнетающими.
Таким образом, угнетающей последовательностью нот являются C подряд идущих нот, удовлетворяющих вышеописанному критерию. Поэтому она однозначно определяется своим стартовым положением в песне. Определите стартовое положение всех угнетающих последовательностей.
PROBLEM NAME: moosick
Формат входных данных
* Строка 1: Одно целое число: N.
* Строки 2..1+N: N нот в песне ФД, по одной ноте на строке.
* Строка 2+N: Одно целое число: C.
* Строки 3+N..2+N+C: C нот определяющих угнетающую последовательность. Все транспозиции и переупорядочивания также угнетающие последовательности.


Формат выходных данных
* Строка 1: Количество, K, угнетающих последовательностей, которые есть в песне ФД. Заметим, что различные экземпляры угнетающих последовтельностей могут перекрываться друг с другом.
* Строки 2..1+K: Каждая строка указывает начальную позицию угнетающей последовательности (1 – первая нота в песне ФД, N - последняя). Эти начальные позиции должны указываться в порядке возрастания.
Примечание
Две угнетающих последовательности встретились в песне ФД и они перекрываются в одной ноте. Первая – 8,5,7 (транспонирована на 1 и переупорядочена), начинается с позиции 2, а вторая 7,9,10 (транспонирована на 3) , начинается с позиции 4.


Фермер Джон хочет сделать фотографию коров, которые стоят в ряд. А они все время перемещаются.
У ФД есть N (1 <= N <= 20,000) коров, каждая из которых имеет уникальный идентификатор - целое число. ФД хочет сфотографировать своих коров в особом порядке, который определяется содержимым массива A[1...N], где A[j] содержит ID j-ой коровы в правильном порядке.
ФД выстраивает своих коров, но прежде чем он успеет нажать кнопку "зафиксировать фотографию", группа коров (необязательно непрерывная) переходит на множество новых позиций (также необязательно непрерывных). ФД опять их выстраивает в желанном порядке, а часть коров снова перед самы нажатием меняет свои позиции. Так продолжается 5 раз.
Вам дается содержание каждой из этих 5 фотографий. Вы должны, если сможете, восстановить правильный порядок, заданныq массивом A.
Каждая фотография задает порядок, который в нескольких позициях отличается от правильного порядка. На каждой фотографии некоторые коровы перешли на другие позиции. Однако каждая корова перешла на новую позицию не более чем в одной фотографии. Более того, могут быть фотографии, на которых ни одна корова не меняла свою позицию.
PROBLEM NAME: photo
Формат входных данных
* Строка 1: Количество коров, N (1 <= N <= 20,000).
* Строки 2..5N+1: Следующие 5N строк описывают пять упорядочиваний, каждое одним блоком из N строк. Каждая строка содержит ID коровы целое число в диапазоне от 0 до 1,000,000,000.
Формат выходных данных
* Строки 1..N: Запланированный порядок A, по одному ID в строке.
Примечание
Запланированный порядок A[1..5]: 10, 20, 30, 40, 50.

Фермер Джон хочет сделать фотографию коров, которые стоят в ряд. А они все время перемещаются.
У ФД есть N (1 <= N <= 20,000) коров, каждая из которых имеет уникальный идентификатор - целое число. ФД хочет сфотографировать своих коров в особом порядке, который определяется содержимым массива A[1...N], где A[j] содержит ID j-ой коровы в правильном порядке.
ФД выстраивает своих коров, но прежде чем он успеет нажать кнопку "зафиксировать фотографию", группа коров (необязательно непрерывная) переходит на множество новых позиций (также необязательно непрерывных). ФД опять их выстраивает в желанном порядке, а часть коров снова перед самы нажатием меняет свои позиции. Так продолжается 5 раз.
Вам дается содержание каждой из этих 5 фотографий. Вы должны, если сможете, восстановить правильный порядок, заданныq массивом A.
Каждая фотография задает порядок, который в нескольких позициях отличается от правильного порядка. На каждой фотографии некоторые коровы перешли на другие позиции. Однако каждая корова перешла на новую позицию не более чем в одной фотографии. Более того, могут быть фотографии, на которых ни одна корова не меняла свою позицию.
PROBLEM NAME: photo
Формат входных данных
* Строка 1: Количество коров, N (1 <= N <= 20,000).
* Строки 2..5N+1: Следующие 5N строк описывают пять упорядочиваний, каждое одним блоком из N строк. Каждая строка содержит ID коровы целое число в диапазоне от 0 до 1,000,000,000.
Формат выходных данных
* Строки 1..N: Запланированный порядок A, по одному ID в строке.
Примечание
Запланированный порядок A[1..5]: 10, 20, 30, 40, 50.
Problem XX: Cow Photography (Bronze) [Brian Dean, 2011]
Фермер Джон хочет сделать фотографию всех коров, выстроенных в ряд, а они не стоят на месте. N (1 <= N <= 20,000) коров помечены номерами от 1 до N. ФД хочет сфотографировать их, стоящими в ряд в конкретном порядке, заданном массивом A[1..N], где a[j] содержит номер j-той коровы в этом порядке. ФД выстроил коров в этом порядке, но прежде чем он нажал на клавишу фотоаппарата "Сделать снимок", одна корова переместилась на новую позицию. Он снова поставил их в нужном порядке (указанном массивом A), Но снова перед нажатием кнопки уже другая корова переместилась на новую позицию. Так происходило 5 раз. Вам дано содержание каждой фотографии, Вы должны реконструировать содержимое массива A. На каждой из фотографий не более чем одна корова переместилась на новую позицию. Возможно, что ни одна корова не перемещалась.
PROBLEM NAME: photo
Формат входных данных
* Строка 1: Количество коров, N (1 <= N <= 20,000).
* Строки 2..5N+1: Следующие 5N строк описывают 5 порядков, каждый состоит из N последовательных строк. Каждая строка содержит номер коровы, целое число.
Формат выходных данных
* Строки 1..N: Исходный порядок коров в массиве A, по одному ID в строке.
Примечание
Правильный исходный порядок в массиве A[1..5]: 1, 2, 3, 4, 5.
65823#65823
Аспирант Шлёпов собирается провести чемпионат вуза по шахматам. Так как игроков в вузе много, у сообщества есть свой рейтинг ELO. Шлёпов собирается разделить игроков на основании этого рейтинга на две лиги. В высшей лиге должно играть не менее трети игроков, но при этом наименьшее возможное количество; отбор в лигу идёт на основании ELO. Двух игроков с одинаковым ELO распределять в разные лиги нельзя. Высшая лига на турнире должна быть обязательно. Определите, начиная с какого ELO, игроки попадают в высшую лигу.

Формат входных данных
На вход программе в первой строке подаётся натуральное число N (N ≤ 1000) – количество игроков. Далее в N строках идёт по одному натуральному числу ki – рейтинг ELO игрока номер i (1 ≤ ki ≤ 2500).
Формат выходных данных
Выведите одно целое число – ELO, начиная с которого, игроки попадают в высшую лигу. Если в высшей лиге окажется весь турнир, надо вывести наименьший ELO среди заявленных игроков.

Пояснение
Всего пять игроков, значит, в высшей лиге должно быть не меньшедвух. 1750 – точно в высшей лиге. 1600 надо брать в высшую лигу, но их два. Значит, оба идутв высшую лигу, после чего она набрана.
 
65813#65813
В школе в очередной раз заболел преподаватель физкультуры Виктор Дмитриевич. Поэтому директор принял решение, что кто-то из свободных учителей проведёт занятие. После долгих размышлений, самым свободным оказался учитель информатики Анатолий Иванович, который очень любит алгоритмы сортировки, что вызвало сразу проблему у учеников. Ведь Анатолий Иванович первым делом сказал ребятам построиться в шеренгу, но не как обычно (по убыванию роста, ), а так, чтобы каждое нечётное место было отсортировано по росту по убыванию (первое место - самый высокий ученик, третье место выше пятого, пятое выше седьмого и так далее)), а каждое чётное по возрастанию (второе место - самый низкий ученик, четвёртый второй по росту среди всех, шестой - третий по росту среди всех и так далее) (учеников Анатолий Иванович нумеровал с 1).
Помогите ученикам получить правильный порядок, как встать им в шеренгу так, чтобы Анатолий Иванович оказался доволен.
Формат входных данных
На первой строке подаётся число N (1 <= N <= 121)– количество учеников в классе.
На N последующих строках подаются строки вида имя-рост (например, «Ivan 175»), где на первом месте указывается имя ученика – оно всегда одним словом на английском языке, без пробелов, а в конце указывается рост ученика (целое число от 100 до 220).
Формат выходных данных
Выведите имена учеников в одну строку через пробел, как они должны встать на уроке физкультуры.
Примечание:
Имена учеников у всех уникальны, рост ни у кого не повторяется.

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

Для этого Магане может один раз выбрать произвольный набор различных позиций в массиве и заменить элементы на этих позициях на противоположные, то есть умножить их на \(-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\)).

 

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

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

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



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

Расстояние между препятствиями и окнами достаточно большое, поэтому во время переезда через препятствие роботы не будут проезжать мимо окна.

За доставку одного заказа компания-организатор доставки получает \(p\) крипторублей. Стоимость создания одного нового робота равна \(c\) крипторублей. Итоговая прибыль равна суммарному доходу от доставки заказов за вычетом суммарной стоимости создания всех роботов. Компания хочет максимизировать свою прибыль. При этом, она не обязана выполнить все заказы, а роботы могут в любой момент остановиться, и прекратить процесс доставки.

Определите максимальную прибыль, которую может получить компания.

Формат входных данных
В первой строке входных данных находятся четыре целых числа \(n\), \(m\), \(c\), \(p\) (\(0 \le n, m \le 100\,000\), \(1 \le c, p \le 10^6\)) — количество препятствий, количество заказов в базе, стоимость создания клона робота и стоимость доставки одного заказа, соответственно.

В следующих \(n+m\) строках идёт описание препятствий и окон, в которые нужно доставить заказы, в порядке следования колонны роботов вдоль общежитий слева направо. Каждая строка содержит два целых числа \(t_i\) и \(h_i\) (\(1 \le t_i \le 2\), \(1 \le h_i \le 10^6\)) — тип объекта \(t_i\) (\(1\) для препятствия и \(2\) для окна) и \(h_i\) "— высота препятствия в этажах или этаж, на котором находится окно.

Гарантируется, что ровно \(n\) объектов имеют тип \(1\), и оставшиеся \(m\) объектов имеют тип \(2\).

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

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

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



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

Старец Летовец, известный своими суперскиллами, решил научить своих учеников создавать "Последовательность Трёх Сил". Он дал им список чисел и сказал: "Отсортируйте эти числа так, чтобы они образовали Последовательность Трёх Сил. Вот правила:"

  1. Сила Тройки. Числа, которые делятся на 3, должны идти первыми.

  2. Сила Порядка. Среди чисел, делящихся на 3, меньшие числа должны идти перед большими.

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

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

Формат входных данных
В первой строке записано натуральное число n (n <= 105) - количество целых чисел в списке. Далее, в n строках записано по одному целому числу numi ( -105 <= num<= -105).


Формат выходных данных
Выведите в одной единственной строке Последовательность Трёх Сил, составленную из исходного списка чисел.

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

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

Помогите друзьям найти искомое максимальное значение \(k\).

Формат входных данных
В первой строке входных данных находится целое число \(n\) — количество слов (\(1 \leqslant n \leqslant 2\cdot 10^5\), \(n\) — четное).

В следующих \(n\) строках заданы слова, которые есть у друзей. Гарантируется, что все строки имеют одинаковую длину и суммарная длина строк не превышает \(2 \cdot 10^6\).

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

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

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

Входные данные
В первой строке записано целое число N (1≤N≤30000). В последующих N строках записано по одному целому числу Pi (0≤Pi≤60000), представляющему собой ПП соответствующего игрока.

Выходные данные
В первой строке через пробел выведите число игроков, отобранных в команду, и их суммарный ПП. В последующих строках выведите номера игроков, вошедших в команду, в произвольном порядке — по одному числу в строке. Нумерация игроков должна соответствовать порядку перечисления игроков во входном файле. Если ответов несколько, выведите любой из них.
Рассмотрим бесконечную клетчатую бумагу. Покрасим некоторые узлы сетки в черный цвет, а остальные будем считать белыми. Узел V< называется внутренним, если он внутренний по вертикали и внутренний по горизонтали. Узел внутренний по горизонтали, если слева и справа от V расположены по крайней мере по одному черному узлу. Узел внутренний по вертикали, если сверху и снизу от V расположены по крайней мере по одному черному узлу.

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

Входные данные
Первая строка содержит одно целое число n (0 ≤ n≤ 100 000) – количество черных узлов в начале. Каждая из следующих n строк содержит два целых числа – координаты очередного черного узла, по модулю не превосходящие 109.

Выходные данные
Выведите число черных вершин после окончания всех перекрасок. Если процедура никогда не закончится, то выведите –1.
Для транспортирования материалов из цеха А в цех В используется конвейер. Материалы упаковываются в одинаковые контейнеры и размещаются на ленте один за одним в порядке изготовления в цехе А. Каждый контейнер имеет степень срочности обработки в цехе В. Для упорядочивания контейнеров по степени срочности используют накопитель, который находится в конце конвейера перед входом в цех В. Накопитель работает пошагово, на каждом шаге возможны следующие действия:

накопитель перемещает первый контейнер из ленты в цех В;

накопитель перемещает первый контейнер из строки в склад (в складе каждый следующий контейнер помещается на предыдущий);

накопитель перемещает верхний контейнер из склада в цех В.

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

Входные данные
Первая строке содержит количество тестов N. Далее следует N строк, каждый из которых описывает отдельный тест и содержит целое число K (1≤ K ≤ 10000) — количество контейнеров в последовательности и K действительных чисел — степеней срочности контейнеров в порядке их поступления из цеха А (меньшим числам соответствует большая степень срочности).

Выходные данные
Каждая строка должна содержать ответ для одного теста. Необходимо вывести 1, если необходимое упорядочивание возможно, или 0 в противном случае.
Экономический кризис вынуждает центробанки многих стран выделять большие пакеты экономической помощи инвестиционным и сберегательным банкам для поддержания ликвидности и сохранения кредитных рынков.

Центробанк Флатландии планирует выделить N пакетов помощи. Каждый пакет характеризуется его суммой Ai.

Банки предоставили запросы на помощь. На данный момент поступило M запросов. Каждый запрос характеризуется его продолжительностью Bi дней.

Законы Флатландии требуют, чтобы при возвращении пакета помощи банк каждый день возвращал центробанку одинаковую целую сумму флатландских рублей. Таким образом, пакет с суммой A и продолжительностью B можно выделить только в случае если A делится на B.

По известной информации о пакетах помощи и запросах подсчитайте количество возможных пар пакет-запрос.

Входные данные
Первая строка содержит целое число N – количество пакетов помощи (1 ≤ N ≤ 100 000). Вторая строка содержит N целых чисел: a1, a2, . . . , an (1 ≤ ai ≤ 106).

Вторая строка содержит целое число N – количество запросов (1 ≤ M ≤ 100 000). Вторая строка содержит N целых чисел: b1, b2, . . . , bn (1 ≤ bi ≤ 106).

Выходные данные
Выведите количество возможных пар.

Комментарий к примеру

Пары могут быть следующие: (3, 1) дважды как (a1, b1) и (a1, b2), (3, 3), (4, 1) дважды, (4, 2), (5, 1) дважды, (6, 1) дважды, (6, 2) и (6, 3).
Палиндром - это строка, которая читается одинаково как справа налево, так и слева направо. 
 
На вход программы поступает набор больших латинских букв (не обязательно различных). Разрешается переставлять буквы, а также удалять некоторые буквы. Требуется из данных букв по указанным правилам составить палиндром наибольшей длины, а если таких палиндромов несколько, то выбрать первый из них в алфавитном порядке.
 
Входные данные
В первой строке входных данных содержится число N (1 <= N <= 100000). Во второй строке задается последовательность из N больших латинских букв (буквы записаны без пробелов).
 
Выходные данные
В единственной строке выходных данных выдайте искомый палиндром.
 
Ввод Вывод
3
AAB
ABA
6
QAZQAZ
AQZZQA
6
ABCDEF
A
У свинофермера Васи есть свиноферма рядом с городом М. Он решил навестить своего друга в городе С.-П. По дороге из М. в С.-П. расположено N городов, в которых свинина пользуется стабильным спросом. Вася решил совместить приятное с полезным и заработать немного денег. Он взял с собой N свиней и решил продавать по одной свинье в каждом из городов.

Цены на свиней в разных городах разные. В j-ом городе за один килограмм живого веса платят Pj рублей. Расстояние до j-го города по дороге из М. в С.-П. равно Dj километров.

Васины свиньи имеют разные веса. Перевозка одного килограмма свиньи на один километр обходится в T рублей.

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

Входные данные
Первая строка входного файла содержит числа N(1≤N≤1000) и T(1≤T≤109). Вторая строка содержит N чисел Wi, задающих вес Васиных свиней (1≤Wi≤109). Третья строка содержит N чисел Di, задающих расстояния до города i от М(1≤Di≤109). Четвертая строка содержит N чисел Pi, задающих цены в городах (1≤Pi≤109). Все числа целые.

Выходные данные
Выведите N чисел. j-ое число должно быть номером свиньи, которую следует продать в j-ом городке. Свиньи нумеруются с 1 в том порядке, как они перечислены во входном файле.
На склад привезли много пустых ящиков разного размера. Известно, что их все можно сложить один в один (то есть так, что каждый следующий помещается в предыдущий). Требуется определить, в какой последовательности они будут вложены друг в друга. Один ящик вкладывается в другой, если он меньше по объему.

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

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

Разрешается выбрать четырехугольник, в котором ровно одна диагональ, и при этом эта диагональ черного цвета (сам четырехугольник не обязан быть полностью черным) и проделать с ним следующее: заменить диагональ на противоположную (т.е. если сам четырехугольник был ABCD и в нем была диагональ AC, то она меняется на диагональ BD), после чего перекрасить стороны этого четырехугольника и новую диагональ в красный цвет.

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

Входные данные
Вводится сначала число N (3≤N≤30000). Далее идет описание N–3 проведенных диагоналей. Каждая диагональ описывается двумя натуральными числами — номерами вершин, которые она соединяет. Гарантируется, что проведенные диагонали внутри N-угольника не пересекаются.

Выходные данные
Выведите минимальное число действий, необходимое для того, чтобы перекрасить весь N-угольник и все его диагонали. Если перекрасить многоугольник указанным способом невозможно, выведите одно число –1 (минус один).
Клуб Юных Хакеров организовал на своем сайте форум. Форум имеет следующую структуру: каждое сообщение либо начинает новую тему, либо является ответом на какое-либо предыдущее сообщение и принадлежит той же теме. 
 
После нескольких месяцев использования своего форума юных хакеров заинтересовал вопрос - какая тема на их форуме наиболее популярна. Помогите им выяснить это.
 
Входные данные
В первой строке вводится целое число N - количество сообщений в форуме (1 <= N <= 1000). Следующие строки содержат описание сообщений в хронологическом порядке. 
 
Описание сообщения, которое представляет собой начало новой темы, состоит из трех строк. Первая строка содержит число 0. Вторая строка содержит название темы. Длина названия не превышает 30 символов. Третья строка содержит текст сообщения. 
 
Описание сообщения, которое является ответом на другое сообщение, состоит из двух строк. Первая строка содержит целое число - номер сообщения, ответом на которое оно является. Сообщения нумеруются, начиная с единицы. Ответ всегда появляется позже, чем сообщение, ответом на которое он является. Вторая строка содержит текст сообщения. 
 
Длина каждого из сообщений не превышает 100 символов.
 
Выходные данные
Выведите название темы, к которой относится наибольшее количество сообщений. Если таких тем несколько, то выведите первую в хронологическом порядке
 
Ввод Вывод
2
0
topic 1
body of message 1
0
topic 2
body of message 2
topic 1

 
Поделиться
Класснуть