A. Анаграмматический Хаос
Xotira: 32 MB, Vaqt: 1000 msВ мире древних текстов и тайн силы анаграмм скрыты мудрые знания и могущественные заклинания. Двое отважных исследователей, Мика и Яё, решили вступить в сражение с загадками, спрятанными мудрыми магами. Они отправились на поиски тайн, но понимают, что путь к ним усеян опасностями и испытаниями. Они обратились к вам за помощью в решении одной из могущественных загадок.
Дается строка \( s \) состоящая из \( k \) первых букв английского алфавита. За одну операцию можно переставить две соседние буквы в строке \( s \). Пусть \( d(x, y) \) - минимальное количество операций, которое требуется, чтобы строку \( x \) превратить в строку \( y \). Обозначим \( P(s) \) как множество всех перестановок строки \( s \). Требуется найти \( \max_{s' \in P(s)} d(s, s') \).
Первая строка содержит целое число \( k \) (\( 2 \leq k \leq 10 \)) - количество различных букв в строке \( s \).
Вторая строка содержит строку \( s \) (\( |s| \leq 10^5 \)), состоящую из \( k \) различных строчных букв английского алфавита.
Выведите одно целое число - максимальное значение \( d(s, s') \) для всех перестановок \( s' \) строки \( s \).
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
2 bbba |
3 |
2 |
3 abc |
3 |
3 |
3 caccb |
6 |
B. Космическая Балансировка
Xotira: 32 MB, Vaqt: 1000 msГалактический архитектор Эркин снова создает звездные системы. На этот раз ему поручено создать \( k \) галактик из \( n \) звезд с весами \( m_1, m_2, \ldots, m_n \). Однако, в соответствии с законом Космического баланса, полученные галактики должны иметь одинаковую массу. Помогите Эркину определить, возможно ли это.
Первая строка содержит два целых числа \( n \) и \( k \) (\( n \leq 20 \), \( k \leq n \)) - количество чисел в массиве и количество кучек.
Вторая строка содержит \( n \) целых чисел \( m_1, m_2, \ldots, m_n \) (\( m_i \leq 10^7 \)), разделенных пробелами - элементы массива.
Выведите "YES", если можно разбить массив на \( k \) кучек с одинаковой суммой, и "NO" в противном случае.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
5 3 2 7 5 3 13 |
NO |
2 |
5 3 3 5 4 1 2 |
YES |
C. Команда аналитиков
Xotira: 128 MB, Vaqt: 2000 msАркадий - менеджер команды аналитиков из \(k\) человек. У Аркадия есть бэклог из \(n\) задач, \(i\)-я задача требует \(t_i\) дней работы любого из членов команды (мы считаем всех членов команды равнозначными). Над каждой задачей от начала до конца должен работать кто-то один. Передавать задачи в процессе выполнения неудобно. Для каждой задачи известен дедлайн - \(d_i\) рабочих дней. Помогите Аркадию определить, успеет ли его команда выполнить все задачи в срок.
В первой строке заданы два целых положительных числа - \(n\) и \(k\)
\((1 <= n, k <= 15)\). В каждой из следующих \(n\) строк заданы
два целых положительных числа - \(t_i\) и \(d_i\) \((1 <= t_i <= d_i <= 10^9)\).
Выведите NO, если нельзя выполнить все задачи в срок.
Иначе в первой строке выведите YES.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
5 2 3 3 2 2 3 6 2 4 2 6 |
YES |
2 |
2 1 4 7 4 7 |
NO |
3 |
1 2 1 2 |
YES |
4 |
5 2 5 5 2 2 1 6 2 4 2 6 |
YES |
D. Минимальное Максимальное Ребро
Xotira: 32 MB, Vaqt: 2000 msДан взвешенный связный неориентированный граф и отмечены две вершины s и t. Найдите минимальное максимальное ребро на пути из вершины s в вершину t.
В первой строке заданы четыре целых числа через пробел: \( n \), \( m \), \( s \), \( t \) (\( n \leq 10^5 \), \( n-1 \leq m \leq 3 \times 10^5 \)) - количество вершин в графе, количество рёбер в графе и номера начальной и конечной вершин пути соответственно.
В следующих \( m \) строках описаны рёбра графа. Каждая строка содержит три целых числа через пробел: \( u \), \( v \), \( w \) (\(1 \leq u,v \leq n, 1 \leq w \leq 10^9 \)) - вершины, которые соединяет ребро, и его вес.
Выведите одно число - вес минимального максимального ребра на пути из вершины \( s \) в вершину \( t \).
В примере существует множество путей из 1 в 5. Рассмотрим путь 1 → 2 → 5. В этом пути максимальное ребро веса 5. Заметим, что нет пути из 1 в 5 с меньшим максимальным ребром.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
5 7 1 5 2 5 2 1 2 5 3 1 5 4 5 6 3 2 3 2 4 4 5 1 10 |
5 |
E. Настольная игра
Xotira: 32 MB, Vaqt: 2000 msПетя купил новую настолочку перед первой партией с Васей решил внимательно подумать будущую стратегию игры.
В этой игре нестандартные правильна получения ресурсов. Объем получаемых на каждому ходу ресурсов является случайной величиной и определяется следующим образом:
Все \(n\) шестигранных кубиков помещаются в непрозрачный мешок:
Игрок перемешивает кубики и вытягивает 2 из мешка.
Побрасывает два вытянутых кубика и определяет два числа \(a\) и \(b\) на верхних гранях.
Объем предоставляемых ресурсов равен \((a+b)^3\).
Для составления стратегии Пете необходимо знать математическое ожидание предоставляемых на каждом ходу ресурсов.
Для вычисления необходимого математического ожидания следует считать что любую пару кубиков игрок может вытянуть равновероятно, и при подбрасывании кубиков каждая из граней оказывается верхней с равной вероятностью.
В первой строке задано одно число \(n (2 <= n <= 100)\)
Далее \(n\) строках заданы описания граней кубиков: шесть целых чисел \(a_{i, j}\) \((1 <= a_{i, j} <= 100)\).
Выведите ответ на задачу. Ответ будет защитан, если относительная ошибка ответа не будет превосходить \(10^{-4}\)
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
2 1 2 3 4 5 6 1 2 3 4 5 6 |
465.500000 |
2 |
3 2 2 2 2 2 2 4 5 5 5 5 4 9 8 9 1 9 4 |
978.222222 |
3 |
4 1 1 1 1 1 1 1 2 3 4 5 6 3 4 3 4 3 4 9 9 9 9 9 9 |
943.250000 |
F. Озеленение Марса
Xotira: 32 MB, Vaqt: 2000 msТребуется высадить аллею из \(n\) деревьев. Лунки под деревьями пронумерованы последовательно. Расстояние между деревьями определяется как разность номеров лунок, где они растут.
На Марсе могут выжить только \(k\) сортов деревьев. Красота одного дерева \(i\)-го сорта \(c_i\).
Требуется озеленить Марс с максимальной суммарной красотой. Однако, деревья одного сорта конфликтуют, поэтому их следует садить как минимум на расстоянии \(k\).
В первой строке находится два целых числа \(k (1 <= k <= 5)\) и \(n (1 <= n <= 10^5) \)
В следующей строке следуют \(k\) целых чисел \(c_i\) \((1 <= c_i <= 10^5) \)
В единственной строке выведите ответ на задачу.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
2 5 6 7 |
33 |
2 |
1 5 9 |
45 |
3 |
5 2 11 10 7 5 18 |
29 |
G. Степень двойки
Xotira: 32 MB, Vaqt: 2000 msЛюбое натуральное число \(n\) может быть представлено как сумма степеней двойки. Например, число 6 может быть представлено как 1 + 1 + 1 + 1 + 1 + 1, 2 + 2 + 2, 4 + 2, 4 + 1 + 1, и т.д.
Обозначим \(f(x)\) - минимальное количество членов в разбиении числа \(x\).
Для данного натурального числа \(n\) определите натуральное число \(m\) ,для которого выполняются следующие условия:
\(f(n) = f(m)\)
Число m больше числа \(n\) и является минимально возможным.
Одно натуральное число \(n (1 <= n <= 2^{30})\)
Выведите одно число, ответ на задачу.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
6 |
9 |
2 |
20 |
24 |
3 |
1026 |
1028 |
H. XOR Турнир
Xotira: 32 MB, Vaqt: 1000 msXOR Турнир - соревнование, где встречаются лучшие из лучших спортивных программистов. Алиса и Боб, участники этого турнира, решили потренироваться в своей любимой игре.
Для этой игры двум участникам дается массив из \( n \) целых неотрицательных чисел. Участники по очереди забирают себе по одному числу из массива. После того как в массиве больше не осталось чисел, происходит подсчет XOR сумм для каждого участника. Побеждает тот, у кого получившееся XOR сумма больше. Если же XOR суммы оказались равны, объявляется ничья.
Ваша задача: написать программу, которая определит исход игры при том, что Алиса и Боб играют оптимально и Алиса ходит первой.
Первая строка содержит целое число \( n \) (\( 1 \leq n \leq 10^5 \)) - длина массива. Вторая строка содержит \( n \) неотрицательных целых чисел \( a_1, a_2, \ldots, a_n \) (\( 0 \leq a_i \leq 10^9 \)) - элементы массива.
Выведите "Alice", если выигрывает Алиса, "Bob", если выигрывает Боб, и "Draw", если ничья.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
3 2 3 5 |
Alice |
2 |
3 1 1 1 |
Bob |
3 |
3 1 2 3 |
Draw |
I. Язык Foo
Xotira: 32 MB, Vaqt: 2000 msНиже вам будет приведен псевдокод некоторой функции Foo. Вам нужно понять, как работает эта функция, и лучше ее реализовать.
function Foo(array_of_ints a): // input parameters: array of integers
result = 0
while size(a) > 2: // as long as the array length is at least two elements
sort(a) // sort the array in ascending order
n = size(a)
x = a[0] + a[n - 2]
result += x // add x to the accumulated result
delete(a, n-2) // delete element by index (n-2)
delete(a, 0) // delete element at index 0
add(a, x) // add element by value x to end of array
return sum(a) + result // add the sum of elements to the accumulated result
Обратите внимание, что этот псевдокод использует 0-индексацию массива.
Первая строка входных данных содержит одно целое число \(n\) (1 ≤ \(n\) ≤ 300 000) — количество элементов в массиве \(a\).
Вторая строка содержит \(n\) целых чисел \(a_i\) (0 ≤ \(a_i\) ≤ 1 000 000). Числа в строке разделены одинарными пробелами.
Выведите одно целое число - ответ на задачу.
# | INPUT.TXT | OUTPUT.TXT |
---|---|---|
1 |
1 362018 |
362018 |
2 |
3 3 6 2018 |
2036 |
3 |
6 3 6 2 0 1 8 |
53 |