Структуры данных

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

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

Входные данные
Сначала вводятся размеры поля N и M (1 ≤ N ≤ 20, 1 ≤ M ≤ 50000), затем количество команд K (1 ≤ K ≤ 105), а затем сами команды. Команды записаны по одной в строке в следующем формате:

Color i j — окраска клетки (i,j) в черный цвет;
Neighbors i j — нахождение белых соседей для БЕЛОЙ клетки (i,j).

1 ≤ i ≤ N, 1 ≤ j ≤ M.

Выходные данные
На каждый запрос Neighbors требуется вывести сначала количество ближайших белых соседей (или 0, если ни с одной из сторон белых клеток не осталось), а затем их координаты (соседей можно перечислять в произвольном порядке). Если запросов Neighbors нет, ничего выводить не надо.
Примеры
Входные данные Выходные данные
1 5 5 6
Color 4 2
Neighbors 4 3
Color 2 3
Color 3 3
Neighbors 4 3
Neighbors 5 1
4
4 1
4 4
3 3
5 3
4
4 1
4 4
1 3
5 3
2
5 2
4 1
Назовем подпоследовательностью массива a непустой массив b такой, что он может быть получен из массива a удалением нескольких (возможно, никаких) элементов массива a. Например, массив [1,3]  является попоследовательностью массива [1,2,3] , но [3,1]  не является.

Назовем подотрезком массива a непустой массив b такой, что он может быть получен путем удаления нескольких (возможно, никаких) первых и последних элементов массива a. Например, [1,2]  является подотрезком массива [1,2,3] , а [1,3]  не является. Несложно заметить, что у массива длины n ровно  \( {n(n+1) \over 2}\)  подотрезков.

Назовем массив a длины n возрастающим , если для любого 1 ≤ i ≤ n выполняется ai ≤ ai+1.

Монотонностью массива назовем количество его возрастающих подотрезков.

Дан массив a длины n. Посчитайте сумму монотонностей по всем его подпоследовательностям. Так как ответ может быть очень большим, выведите его по модулю 109+7.

Входные данные
В первой строке задано целое число n (1 ≤ n ≤ 200000) — длина массива a.
Во второй строке заданы n целых чисел (1 ≤ ai ≤ 200000) — элементы массива a.

Выходные данные
Выведите одно целое число — сумму монотонностей всех подпоследовательностей по модулю 109+7.

Примечание
В первом тестовом примере у массива есть 7 подпоследовательностей:
  • У массива [1]  есть ровно один подотрезок и он является возрастающим.
  • У массива [2]  есть ровно один подотрезок и он является возрастающим.
  • У массива [3]  есть ровно один подотрезок и он является возрастающим.
  • У массива [1,2]  есть три подотрезка ([1], [2], [1,2] ) и все они являются возрастающими.
  • У массива [1,3]  есть три подотрезка ([1], [3], [1,3] ) и все они являются возрастающими.
  • У массива [3,2]  есть три подотрезка ([3], [2], [3, 2] ), но только два из них ([3]  и [2] ) являются возрастающими.
  • У массива [1,3,2]  есть шесть подотрезков ([1], [3], [2], [1,3], [3,2], [1,3,2] ) и четыре из них ([1], [3], [2], [1,3] ) являются возрастающими.
Во втором тестовом примере все возрастающие подотрезки всех подпоследовательностей имеют длину 1.
Примеры
Входные данные Выходные данные
1 3
1 3 2
15
2 3
6 6 6
12
Беси расположена на сети из N (2≤N≤105) вершин помеченных 1…N и 2N порталов помеченных 1…2N. Каждый портал соединяет две различных вершины u и v (u≠v). Множество порталов может соединять некоторую пару вершин.
Каждая вершина v соседняя для четырёх различных порталов. Список порталов вершины v задаётся как pv=[pv,1,pv,2,pv,3,pv,4].

Ваше текущее положение может быть представлено упорядоченной парой (current vertex,current portal); то есть парой (v,pv,i) где 1≤v≤N и 1≤i≤4. Вы можете использовать одну из следующих операций для изменения своего текущего положения:

Изменить текущую вершину перемещением через текущий портал.
Переключить текущий портал. В каждой вершине первые два портала в списке объединены в пару и последние два портала в списке также объединены в пару. Поэтому если Ваше текущее состояние (v,pv,2), то Вы можете переключиться чтобы использовать портал (v,pv,1) и обратно. Аналогично, если Ваше текущее положение (v,pv,3) Вы можете переключиться на портал (v,pv,4) и обратно. никакие другие переключения не разрешены (например, Вы не можете переключиться с портала pv,2 на портал) pv,4).
Всего имеется 4N различных состояний. К несчастью, может не оказаться, что что любое состояние достижимо из любого с помощью последовательности заданных операций. Поэтому, за цену cv (1≤cv≤1000) мунов вы можете сделать перестановку списка порталов соседних вершине v, в любом желаемом Вами порядке. После этого первые два портала в списке объединяются в одну пару, а последние два портала - в другую пару.

Например, если Вы переставить порталы вершины v в порядке [pv,3,pv,1,pv,2,pv,4], Это означает. что если Вы в вершине v,

Если Вы в портале pv,1, Вы можете переключиться на портал pv,3 и обратно
Если Вы в портале pv,2, Вы можете переключиться на портал pv,4 и обратно
Теперь Вы не можете переключаться с портала pv,1 на pv,2, или с портала pv,3 на портал pv,4 и обратно.
Вычислите минимальное количество мунов, требуемых для модификации сети таким образом, чтобы сделать достижимым каждое состояние из каждого состояния. Гарантируется, что тестовые данные сконструированы таким образом, что существует хотя бы один способ такой модификации сети.

Входные данные: 
Первая строка содержит N.
Каждая из следующих N строк описывает вершину. Строка v+1 содержит 5 разделённых одиночными пробелами целых чисел cv,pv,1,pv,2,pv,3,pv,4.
Гарантируется, что для каждой v все pv,1,pv,2,pv,3,pv,4 различны, и каждый портал появляется в списках ровно двух вершин.

Выходные данные: 
Одна строка содержит минимальное количество мунов требуемых для модификации сети чтобы сделать возможным достижимость каждого состояния из другого состояния.
 
Примеры
Входные данные Выходные данные Пояснение
1 5
10 1 4 8 9
11 1 2 5 6
12 9 10 2 3
3 4 3 6 7
15 10 8 7 5 
13 Достаточно сделать перестановку списков вершин 1 и 4. Это требует c1+c4=13 мунов. Перестановки такие: p1=[1,9,4,8] и p4=[7,4,6,3].
Реализуйте структуру данных для эффективного вычисления максимумов подряд идущих элементов массива.

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

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

 

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

Кот Гусь подготовил для Ника Фьюри прямоугольную таблицу a размера \(n \cdot m\), содержащую числа от 0 до p−1. Ник Фьюри сразу понял, что каждое число в этой таблице выбрано случайно равновероятно от 0 до p−1, независимо от остальных.

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

Формально, вам необходимо найти такие \(1 <= i_1 <= i_2 <= n\), \(1 <= j_1 <= j_2 <= m\), что сумма ax,y по всем \(i_1 <= x <= i_2\), \(j_1 <= y <= j_2\) делится на p, и среди таких имеет максимальную сумму.

Входные данные
В первой строке расположено три целых числа n, m, p (\(1 <= n·m, p <= 1 000 000\)) — размерности матрицы и число, на которое должна делится сумма подматрицы.
В следующих n строках расположено по m целых чисел, j-е число в i-й строке равно ai,j (\(0 <= a_{i,j} <= p ? 1\)).
Гарантируется, что каждое число в a выбрано независимо случайно равновероятно от 0 до p−1.

Выходные данные
Выведите одно целое число — максимальную сумму прямоугольной подматрицы, в которой сумма делится на p. Если таких нет, выведите 0.

 

Примеры
Входные данные Выходные данные
1
6 7 5
0 0 3 0 1 0 4
0 2 3 0 2 2 1
2 4 1 4 4 0 3
1 1 0 2 0 3 2
3 0 3 1 0 1 2
1 2 0 0 3 3 1
65
Дана последовательность чисел. Найти в ней наименьшее число.
 
Входные данные
Задано сначала число N (количество чисел в последовательности, 1<=N<=100000), а затем
N чисел.
 
Выходные данные
Выведите наименьшее число.

Ввод Вывод
7
4 2 5 -1 4 6 2
-1
 
Censoring#27298
Фермер Джон купил подписку журнала Good Hooveskeeping для своих коров. К сожалению, последний номер содержит неподходящую статью - как приготовить бифштекс. ФД не хочет, чтобы его коровы её читали.
 
ФД взял текст журнала, создал строку S длиной не более чем 10^5 символов. У него есть список слов t_1, t_2, ..., t_N, которые он хочет удалить из S. Поэтому ФД находит ближайшее вхождение слова из списка T (то есь с наименьшим индексом) и удаляет его из S. Затем он продолжает это процесс опять, пока в S не останется слов из T. Заметим, что удаление слова может создавать новое вхождение свлоа из T, которое не существовало ранее.
 
ФД заметил, что слова из списка T обладают таким свойством, что никакое из них не является подстрокой другого слова из T. В частности, это означает, что ранее вхождение слова из T в S всегда определено однозначно. Пожалуйста, помогите ФД определить финальное содержание строки S.
 
INPUT FORMAT: 
Первая строка содержит S. Вторая строка содержит N - количество удаляемых слов. Последующие N строк содержат строки t_1, t_2, ..., t_N. Каждая строка содержит только маленькие латинские буквы (a..z) и суммарная длина всех строк не превысит 10^5.
 
OUTPUT FORMAT: 
Строка S после всех удалений. Гарантируется, что S не станет пустой.
 
Ввод Вывод
begintheescapexecutionatthebreakofdawn
2
escape
execution
beginthatthebreakofdawn


 
Фермер Джон получили груз из N больших стогов сена (1≤N≤100,000), и разметил их в различных положениях вдоль дороги, ведущей к амбару. К несчастью, он полностью забыл, что корова Беси пасётся вдоль дороги и может попасть в ловушку между стогами сена.
Каждый стог j имеет размер Sj и позицию Pj определяющую его положение вдоль дороги. Беси может двигаться вдоль дороги вплоть до позиции стога, но не может пересечь эту позицию. Исключение – если она прошла в этом направлении D единиц расстояния, тогда она набрала достаточно скорости, чтобы протаранить стог любого размера строго меньше чем D. Конечно после этого она может продолжить движение и таранить другие стога.
 
Беси может выйти на свободу если она в конце концов протаранит протаранит самый левый или самый правый стог. Вычислите общий размер участка дороги, состоящий из возможных точек старта Беси, из которых она не сможет выбраться.
 
ФОРМАТ ВООДА:
Первая строка ввода содержит N. Каждая из последующих N строк описывает стог, и содержит два целых числа определяющих размер и позицию в диапазоне 1…109. Все позиции различны.
ФОРМАТ ВЫВОДА:
Выведите одно целое число – размер области дороги, откуда Беси не сможет выбраться.
 
Ввод Вывод
5
8 1
1 4
8 8
7 15
4 20
14


 
Picowso решила переключиться на 1-мерный стиль.
Теперь её картины могут описываться 1-мерным массивом цветов длины NN (1≤N≤100,000). А вот стиль у неё остался прежний: Он начинает на пустом отрезке и рисует отрезками. Она использует каждый из цветов 1…N ровно один раз, хотя некоторые из цветов могут быть полностью скрыты к концу рисования.
 
Moonet, соперник Picowso, придумал, как копировать картины Picowso. Он рисует множество не соединяющихся интервалов и т.д. Moonet может рисовать не более одного интервала каждого цвета во время всего процесса. Вычислите количество таких раундов, которые требуются Moonet, чтобы скопировать 1-мерную картину Picowso.
 
ФОРМАТ ВВОДА:
 
Первая строка ввода содержит N, и следующие N строк содержат целое число в интервале 0…N, указывающее цвет каждой ячейки на 1-мерном холсте (0 для пустой ячейки).

ФОРМАТ ВЫВОДА:
 
Выведите минимальное количество раундов, которое требуется для копирования заданного рисунка или -1, если невозможно повторить этот рисунок стилем, аутеничным стилю Picowso (то есть, её нельзя нарисовать слоями последовательностей интервалов, по одному каждого цвета).
 
Ввод Вывод
7
0
1
4
5
1
3
3
2

Примечание
В данном примере интервал цвета 1 должен быть закрашен в более раннем раунде, чем интервалы цветов 4 и 5, поэтому необходимо как минимум два раунда.
 
Фермер Джон обнаружил, что разные типы коров любят разные типы травы. Однако он должен правильно их высаживать, чтобы не навредить.
Ферма Джона состоит из NN (1≤N≤200,000), полей, и MM пар полей соединены двунаправленными дорожками (1≤M≤200,000). Используя эти дорожки, можно пройти от любого поля к любому другому полю. Каждая дорожка имеет целочисленную длину в интервале 1…1,000,000. Любая пара полей соединена не более чем одной прямой дорожкой.
 
В каждом поле ФД изначально посадил один из KK типов травы (1≤K≤N). Через некоторое время, однако, он может решить изменить тип травы на некоторых из полей. Он называет это операцией "обновления".
 
После каждого обновления, ФД хочет знать длину кратчайшего пути между двумя полями, имеющими различные типы травы. То есть, среди всех пар полей, имеющих различные типы травы, он хочет узнать, какие два поля ближайшие друг к другу. Гарантируется, что всегда имеется как минимум одна пара полей с различными типами травы.
 
В 30 процентах тестов каждое поле непосредственно соединено не более чем с 10 дорожками.
 
ФОРМАТ ВВОДА:
 
Первая строка ввода содержит четыре целых числа N, M, K, Q, где Q - количество операций обновления (1≤Q≤200,000). Следующие M строк описывают дорожки. Каждая строка содержит три целых числа A, B, L, указывающих, что есть дорожка между полями A, B и её длина L. (A, B - целые числа в интервале 1…N). Следующая строка указывает начальный тип травы для каждого поля (N целых чисел в интервале 1…K). Затем идут Q строк, каждая из которых описывает одну операцию обновления двумя целыми числами A и B, означающими, что на поле A типе травы изменён на B.
 
ФОРМАТ ВЫВОДА:
 
Для каждой операции обновления выведите длину кратчайшего пути между двумя полями с различными типами травы, после применения этой операции обновления.
 
Ввод Вывод
3 2 3 4
1 2 3
2 3 1
1 1 2
3 3
2 3
1 2
2 2
1
3
3
1
Вася обожает выставлять сложные фигуры из костяшек домино и, толкнув одну из них, смот- реть, как вся конструкция падает. Однако, он сделал уже так много фигур, что решил придумать что-то новое.
Для своей новой идеи он использует костяшки не только длиной 2, но и более длинные (и более короткие). Все костяшки выстраиваются в одну линию на расстоянии 1, а цель игры опрокинуть все костяшки толкнув наименьшее количество костяшек.

Каждую костяшку можно толкнуть влево или вправо, падая она опрокидывает все костяшки, находящиеся на расстоянии строго меньшем высоты падающей костяшки. При этом те костяшки, которые упали в результате падения на них других костяшек также падают в ту же сторону и, в свою очередь, могут опрокидывать и другие костяшки и так далее.
 
Формат входных данных
В первой строке записано натуральное число N  (0 <= N <= 1 000 000)      количество костяшек.  Во второй строке записано N натуральных чисел Hi (1 <= Hi <= 1 000 000) высоты костяшек.
Формат выходных данных
Выведите число M наименьшее количество костяшек, которые нужно толкнуть, чтобы вся конструкция упала.
В следующих M строках выведите описание костяшек, которые необходимо толкнуть: номер костяшки (нумерация начинается с единицы и идет слева-направо), а также направление толчка: букву L для толчка влево и R для толчка вправо. Номер костяшки и букву разделяйте пробелом.
Порядок вывода костяшек, которые нужно толкнуть, может быть произвольным. Если решений несколько выведите любое из них

Система оценки
Решения, верно работающие при N <= 1000, будут набирать не менее половины баллов.
 
Ввод Вывод
6
1 2 1 4 1 3
1
6 L
7
1 2 4 1 2 3 2
2
3 R
2 L
Замечание
В первом примере последняя костяшка толкается влево, опрокидывая костяшки с номерами 4 и 5 (их высоты 4 и 1 соответственно). Костяшка номер 4 также падает налево и опрокидывает костяшки с номерами 1, 2 и 3.
Во втором примере костяшка номер 3 толкается вправо, опрокидывая костяшки номер 4, 5 и 6.
Костяшка номер 6 также падает вправо и опрокидывает костяшку номер 7. После этого костяшка
номер 2 толкается влево и опрокидывает костяшку номер 1.
Игра PitCraft происходит в двумерном мире, который состоит из блоков размером 1 на 1 метр.
Остров игрока представляет собой набор столбцов различной высоты, состоящих из блоков камня и окруженный морем.
Над островом прошёл сильный дождь, который заполнил водой все низины, а не поместившаяся в них вода стекла в море, не увеличив его уровень. По ландшафту острова определите, сколько блоков воды осталось после дождя в низинах на острове.
 
Формат входных данных
В первой строке записано натуральное число N (0 <= N <= 100 000)  количество столбцов, задающих ландшафт острова.
Во второй строке записано N натуральных чисел Hi (1 <= Hi <= 109)  высоты столбцов.
 
Формат выходных данных
Выведите одно число  количество блоков занятых водой.
Система оценки
Решения, верно работающие при N <= 100, будут набирать не менее половины баллов.
 
Ввод Вывод
11
2 5 2 3 6 9 3 1 3 4 6
18
 
Замечание
Пример соответствует рисунку. Черным цветом обозначен камень, серым  вода.

Колобок ушёл от бабушки и поехал путешествовать. Неожиданно для себя он забрёл в страну Ивэнлэнд. Первые трудности встали на его пути: Колобка и вход в страну отделял огромный ров с водой, которая, как известно, не очень хорошо влияет на нашего героя. К счастью, повсюду рас- положены воздушные потоки, которые могли поднимать того, кто на них встает, на определённую высоту. Страна не просто так названа Ивэнлэнд, поэтому все высоты, на которые могут поднять героя воздушные потоки — это чётные числа.

Представим воздушные потоки как массив h[1..n] из n натуральных чисел — высот потоков. Для каждого 1 ≤ i ≤ n посчитаем G[i] — индекс ближайшего элемента слева, строго большего h[i]. Более формально, g[i] = max{j | j < i и h[j] > h[i]}. Если i = 1 или до h[i] нет ни одного элемента больше него, то G[i] считается равным 0.

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


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

Помогите Колобку сделать оптимальное изменение, которое позволит добиться, чтобы сумма S(h), описанная выше, после проделанного действия была минимальна.

Формат входного файла
В первой строке входного файла даны числа n, m (1 ≤ n ≤ 105 , 1 ≤ m ≤ 109 ) — количество воздушных потоков и максимальное значение, на которое можно увеличить высоту одного из них. Во второй строке даны высоты воздушных потоков h[i] (1 ≤ h[i] ≤ 109 ). Гарантируется, что все высоты — чётные числа.

Формат выходного файла
В единственной строке выходного файла выведите одно целое число — минимальную искомую сумму.
 
Ввод Вывод
3 100
4 2 6
4
3 2
4 2 6
5
3 10
2 2 2
4
И вот вновь наступил Новый Год, и Васе снова понадобилось наряжать ёлку. Но, памятуя о своих прошлогодних неудачах (Вы о них знаете, если решали прошлогодний контест), он купил в магазине брендовые ударопрочные шарики. К сожалению, на ёлку в результате денег почти не осталось, и её пришлось покупать у какого-то индуса. Поэтому ёлка имеет форму полного двоичного дерева глубины N – на верхушке только одна ветка, и под каждой веткой, кроме самых нижних, снизу растёт ровно две. В самом низу, соответственно, под ветками только Васин немытый пол.

Но когда Вася приступил к украшению, он понял, что совершил страшную ошибку. Ударопрочные шарики были одноцветными и скучными, поэтому Вася не мог развесить их как попало, как он делал это раньше. Пришлось ему разрабатывать алгоритм украшения. Для начала он соотнёс каждому цвету его индекскрасоты – параметр от 0 до 109. Чем он больше, тем более красивым кажется Васе шар этого цвета. Потом он случайным образом развесил шарики у пола (на каждую ветку Вася всегда вешает только один шар). Для всех остальных веток Вася смотрел на их нижних соседей, определял, какой из висящих на этих ветках шариков красивее, и вешал на эту ветку точно такой же.

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

Нижние ветви пронумерованы от 1 до 2^(N- 1), более верхним Вася из лени решил номера не давать. Вася подаёт на вход два вида запросов. В первом он заменяет какой-либо шар в нижнем уровне с номером k на шар цвета c, и хочет узнать, на скольких слоях веток (кроме нижнего) ему придётся перевесить шары, чтобы ёлка по-прежнему подходила под описанный выше алгоритм. Во втором он хочет узнать цвет самого красивого шара в секторе от l до r. К сектору относятся все ветки нижнего слоя с номерами от l до r включительно, а также все находящиеся над ними ветки.То есть, если N = 3, то к секторуот 1 до 2 относятся ветки 1 и 2, а также третья ветка, находящаяся между ними чуть выше.

Формат ввода
В первой строке задана глубина ёлки N (N<= 15) и количество запросов M (M<= 107). Во второй строке задана первоначальная развеска нижних шариков, представленная их индексами красоты. В следующих M строках заданы запросыдвух типов (первый обозначен цифрой 1, а второй, как ни странно, 3). Описание запросов дано выше.

Формат вывода
Нужно вывести Mстрок, содержащих ответы на запросы.
Пример
Ввод:
4 5
1 1 2 3 100 7 11 3
3 1 8
3 2 4
1 5 4
3 1 8
1 5 9
 
Вывод:
100
3
3
11
1
 
(c) Даниил Кирионенко, 9и
Assault#23586
В то время, пока обороняющиеся отвлеклись на Блейза, Корвин начал штурм города. Для того, чтобы его армия вошла в город, ему нужно пробить брешь в стене. В его распоряжении есть целый флот, из которого он собирается обстреливать стены города. Стена являются линией из n сегментов, пронумерованных от 1 до n
Корвин хорошо помнит, насколько укреплен каждый сегмент стены. К сожалению, с тех пор как Корвин последний раз был в Амбере, сегменты несколько раз перестраивали, поэтому их укрепленность могла измениться, поэтому Корвин владеет устаревшей информацией.
Но Джерард не только согласился отвести свой флот из бухты Амбера, благодаря чему флоту Корвина удалось добраться до Амбера с целым и невредимым флотом, но и предоставил ему журнал с m записями, в котором в i-ой записи указано, что были перестроены сегменты с li по ri, а также сказано, насколько изменилась укрепленность всех сегментов (укрепленность каждого сегмента на отрезке [li; ri] изменяется на одно и тоже значение ti).
Корвин m раз предлагает выстрелить по сегментам стены с l по r из p кораблей. Известно, что брешь будет пробита, если на отрезке [l; r] есть хотя бы один сегмент с укрепленностью меньше p. Вы должны ответить ему, будет ли пробита брешь (вывести "YES"), или нет (вывести "NO"). 

Входные данные
На первой строке находятся числа n, m и k (1 <= n, k <= 100000, 1 <= m <= 10000)  - количество сегментов, записей и запросов от Корвина соответственно.
На второй строке находятся числа a1,...an (0 <= ai <= 10).
В следующих m строках содержатся числа l, r, t (1 <= l <= r <= n, -10 <= t <= 10).
В следующих k строках содержатся числа l, r, p (1 <= l <= r <= n, 1 <= p <= 1000).

Выходные данные
В i-ой строке выведите ответ на i-ый запрос Корвина.

 
Примеры
Входные данные Выходные данные
1
10 3 3
123 398 287 190 76 15 407 312 323 659 
4 9 -99
10 10 -82
4 10 76
9 10 32
5 6 283
4 4 983
NO
YES
YES
Реализуйте сбалансированное двоичное дерево поиска.
ВНИМАНИЕ! Пользоваться vector и set из STL СТРОГО ЗАПРЕЩЕНО, однако рекомендуется стрессить ваше решение с ними для поиска багов.

Формат входных данных:
В первой строке дано число n -  количество операций с деревом. 1 <= n <= 100000.
Далее дается n строк – операции с деревом. В каждой строке находится одна из следующих операций:
1) insert x – добавить в дерево ключ x. Если ключ x уже в дереве, то ничего делать не нужно.
2) delete x – удалить из дерева ключ x. Если ключа x в дереве нет, то ничего делать не нужно.
3) exists x – если ключ х есть в дереве, то выведите “true”, иначе “false”.

Формат выходных данных:
Выведите последовательно результат выполнения всех операций exists. Каждый ответ нужно выводить в отдельной строке.
Пример:
Ввод Вывод
6
insert 2
insert 5
insert 3
exists 3
exists 4
delete 5
 
true
false
 
(c) Курбатов Е., 2016
Феоктист Всеволодович — преподаватель физкультуры старой закалки, глубоко убеждённый, что в начале каждого урока школьников необходимо построить по росту. Для этого он сначала просит школьников построиться самостоятельно, после чего последовательно меняет местами про- извольную пару стоящих рядом учеников, пока шеренга не примет желанный вид.

Всего на урок пришло N детей, изначально построившихся таким образом, что рост стоящего на позиции i равен hi (используется нумерация c 1). Можно считать, что все числа hi различны и лежат в диапазоне от 1 до N. Шеренга считается упорядоченной, если на первой позиции стоит школьник ростом один, на второй позиции стоит школьник ростом два и так далее.

Феоктист Всеволодович получает большое удовольствие от процесса упорядочивания школьни- ков, поэтому он всегда выбирает наиболее длинную последовательность обменов. С другой стороны, он не хочет чтобы ученики догадались о том, что он умышленно затягивает построение, поэтому никогда не делает заведомо бессмысленных обменов. А именно, преподаватель никогда не меняет местами школьников на позициях i и j, если hi < hj . Очевидно, что данное ограничение делает процесс сортировки шеренги по росту конечным.

Староста Саша очень любит играть в волейбол и прекрасно понимает, что чем дольше препо- даватель будет расставлять всех по местам, тем меньше времени останется для игры. Ученики уже построились некоторым образом, а Феоктист Всеволодович вышел поговорить по телефону, так что Саша может успеть поменять местами ровно двух школьников, необязательно стоящих рядом в ше- ренге. Разумеется, он хочет сделать это таким образом, чтобы преподаватель как можно быстрее закончил упорядочивать шеренгу (Саша давно уже раскусил, как именно действует Феоктист Всево- лодович). С информатикой у старосты всегда были определённые проблемы, поэтому ему требуется ваша помощь.

Формат входных данных
В первой строке ввода содержится единственное число N — количество школьников на уроке (1 <= N <= 1 000 000). Во второй строке записано N различных целых чисел hi (1 <= hi <= N). i-е число соответствует росту школьника стоящего на i-й позиции.

Формат выходных данных
Выведите два числа — номера позиций школьников, которым необходимо поменяться местами, чтобы минимизировать количество действий преподавателя. Если таких пар несколько, то выведите любую из них. Если никому меняться местами не нужно, выведите -1 -1.
Ввод Вывод
5
2 4 3 5 1
2 5
4 1 2 3 4 -1 -1
10
2 3 7 1 5 10 4 6 9 8
3 7

Дана последовательность вещественных чисел \(a_1, a_2, \dots, a_N\) и целое число \(K\). Для каждого индекса \(i\), удовлетворяющего условию \(K+1 \le i \le N-K\), рассмотрим множество его \(2K\) соседей: \[S_i = \{ a_{i-K}, \dots, a_{i-1}, a_{i+1}, \dots, a_{i+K} \}.\] Вычислим среднее арифметическое элементов этого множества: \[\mu_i = \frac{1}{2K} \sum_{x \in S_i} x\] и их стандартное отклонение: \[\sigma_i = \sqrt{ \frac{1}{2K} \sum_{x \in S_i} (x - \mu_i)^2 }.\] Элемент \(a_i\) называется выбросом, если выполняется неравенство \[|a_i - \mu_i| > 2\sigma_i.\] Если \(\sigma_i = 0\) (все числа в \(S_i\) равны), то условие превращается в \(|a_i - \mu_i| > 0\), то есть \(a_i\) считается выбросом, когда он отличается от этого общего значения.

Требуется определить количество выбросов среди всех элементов, для которых определена окрестность (т. е. для \(i = K+1, K+2, \dots, N-K\)).

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

Входные данные
Первая строка содержит два целых числа \(N\) и \(K\) (\(1 \le K \le \lfloor N/2 \rfloor\), \(N \le 200\,000\)). Вторая строка содержит \(N\) вещественных чисел \(a_1, a_2, \dots, a_N\), разделенных пробелами

Выходные данные

Выведите одно целое число — количество выбросов.
 

Примеры
Входные данные Выходные данные
1 8 2
-0.87270147 -0.34887844 0.95993054 -0.51785580 -0.44876428 0.94608416 -0.30955386 2.16387322
1

Примечание
Ваш балл за задачу — это доля пройденных верно тестов. Пример из условия не входит в число оцениваемых тестов.

 

На столе лежит n верёвок разной длины. Вам нужно связать их все в одну длинную верёвку. За одну операцию можно взять любые две верёвки и связать их в одну — стоимость такой операции равна сумме длин этих двух верёвок.

Например, если связать верёвки длиной 3 и 5, получится одна верёвка длиной 8, а стоимость операции — 8. Эту новую верёвку можно затем связывать с другими.

Требуется найти минимальную суммарную стоимость, за которую можно связать все n верёвок в одну.
 

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

В первой строке записано натуральное число n (1 ≤ n ≤ 50 000) — количество верёвок.

Во второй строке через пробел записаны n натуральных чисел a1, a2, …, an (1 ≤ ai ≤ 10 000) — длины верёвок.
 

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

Выведите одно целое число — минимальную суммарную стоимость связывания всех верёвок в одну. Если верёвка одна (n = 1), выведите 0.

Внимание: ответ может не помещаться в 32-битный целочисленный тип. В языке C++ используйте тип long long; в Python ограничений нет.
 

Пояснение к первому примеру

Оптимальная последовательность: связываем 2 и 3 (стоимость 5), получаем набор {4, 5, 6}. Связываем 4 и 5 (стоимость 9), получаем {6, 9}. Связываем 6 и 9 (стоимость 15). Итого: 5 + 9 + 15 = 29.

На льдине в ряд стоят n пингвинов. У каждого пингвина свой вес — уникальное целое число от 1 до n.
На каждом ходе каждый пингвин, чей вес больше, чем у соседа справа, сталкивает соседа справа в воду. Обратите внимание, что пингвин может столкнуть соседа и сам быть столкнут на одном и том же ходе.
Вам дано исходное расположение пингвинов на льдине. Подсчитайте, сколько ходов пройдёт до момента, после которого на льдине наступит покой и больше никто никого не столкнёт.

Формат входных данных
В первой строке записано целое число n — количество пингвинов (1 ≤ n ≤ 105). Во второй строке записан список из n различных целых чисел от 1 до n, включительно — веса пингвинов на льдине слева направо. Числа разделяются пробелами.

Формат выходных данных
Выведите одно число — количество ходов, после которых на льдине наступит покой.

 
Примечание

В первом примере ряд пингвинов меняется так: [10 9 7 8 6 5 3 4 2 1]  →  [10 8 4]  →  [10]. Итого, есть два хода.

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