Информатика

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

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

Формально, у Вас есть дерево с вершинами помеченными \(1\dots N\) (\(2\le N\le 2\cdot 10^5\)) с корнем в вершине \(1\). Каждая вершина изначально не активна. За одну операцию Вы можете переключить одну вершину из неактивного состояния в активное или обратно. Выведите минимально возможную длину последовательности операций, удовлетворяющей обоим нижеуказанным условиям:

  • Определим, что поддерево с корнем в вершине \(r\) состоит из всех вершин \(v\) таких, что \(r\) лежит на пути из \(1\) в \(v\) включительно. Для каждого из \(N\) поддеревьев дерева существует момент времени, когда множество активных вершин сосредоточено именно в этом поддереве.
  • Каждая вершина неактивна после выполнения всей последовательности операций.

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

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

Вторая строка содержит \(p_2 \dots p_N\) (\(1\le p_i<i\)), где \(p_i\) обозначает родительскую вершину вершины \(i\) в этом дереве.

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

Выведите минимально возможную длину.

Moo Route#90216

В момент времени \(t=0\), Беси находится в точке \(x=0\) на бесконечной числовой прямой. Она двигается на \(1\) влево или вправо каждую секунду. Ровно через \(T\) секунд она возвращается в точку \(x=0\).

Фермер Нхой знает, сколько раз Беси пересекала точки \(x=.5, 1.5, 2.5, \ldots, (N-1).5\), и это задаётся массивом \(A_0,A_1,\dots,A_{N-1}\) (\(1\leq N \leq 10^5\), \(1 \leq A_i \leq 10^6\)). Беси никогда не достигнет ни \(x>N\), ни \(x<0\).

В частности, маршрут Беси может быть представлен строкой \(T = \sum_{i=0}^{N-1} A_i\) символов \(L\) и \(R\), где \(i\)-ый символ представляет направление, в котором двигалась Беси в течение \(i\)-ой секунды. Количество изменений направления определяется как количество пар символов \(LR\) плюс количество пар символов \(RL\) в этой строке.

Помогите ФН посчитать количество маршрутов, соответствующих массиву \(A\) с минимальным количеством изменений направления движения. Гарантируется существование как минимум одного такого маршрута.

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

Первая строка содержит \(N\). Вторая строка содержит \(A_0,A_1,\dots,A_{N-1}\).

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

Количество маршрутов Беси по модулю \(10^9+7\).

Беси работает в текстовом редакторе miV! Его функция "найти и заменить" позволяет ей заменить все вхождения маленькой латинской буквы \(c\) на непустую строку из маленьких латинских букв \(s\). Например, дана строка "\(\texttt{ball}\)". Если Беси выберет в качестве \(c\) символ 'l' а в качестве строки \(s\) "\(\texttt{na}\)", данная строка трансформируется в "\(\texttt{banana}\)".

Беси начинает со строки "\(\texttt{a}\)" и трансформирует её используя некоторое количество операций «найти и заменить» и получает финальную строку \(S\). Поскольку \(S\) может быть большой, она хочет узнать по заданным \(l\) и \(r\) \(1\le l\le r\le \min(|S|,10^{18})\), чему равно \(S_{l\dots r}\) - подстрока S с позиции \(l\) по позицию \(r\) включительно.

Гарантируется, что сумма \(|s|\) по всем операциям не более \(2\cdot 10^5\), и что \(r-l+1\le 2\cdot 10^5\).

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

Первая строка содержит \(l\), \(r\) и количество операций.

Каждая из последующих строк описывает одну операцию и содержит \(c\) и \(s\) для этой операции. Все символы в интервале от 'a' до 'z'.

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

Выведите строку \(S_{l\dots r}\) на одной строке.

Фермер Джон дал Беси \(Q\) строк (\(1 \leq Q \leq 100\)), состоящих только из символов 'M' и 'O.' Любимое слов Беси "MOO", поэтому она хочет преобразовать каждую из этих строк в строку "MOO" используя следующие операции

  1. Заменить первый или последний символ на противоположный (то есть, 'M' на 'O', а 'O' на 'M' ).
  2. Удалить первый или последний символ.

Для каждой строки определите минимальное количество операций, необходимых чтобы сформировать 'MOO' или выведите '-1', если это невозможно.

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

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

Каждая из следующих \(Q\) строк ввода содержит строку из символов 'M' или 'O'. Каждая строка имеет длину от 1 до 100 символов.

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

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

Leaders#90212

У Фермера Джона есть \(N\) коров (\(2 \leq N \leq 10^5\)). Каждая корова имеет породу Guernsey или Holstein. Коровы стоят в ряд пронумерованные \(1 \ldots N\).

Каждая корова записала свой список коров. А именно, список коровы \(i\) содержит диапазон коров, начиная с неё самой (коровы \(i\)) и до коровы \(E_i\) (\(i \leq E_i \leq N\)) включительно.

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

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

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

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

Вторая строка содержит строку длиной \(N\), в который \(i\)-ый символ обозначает породу \(i\)-ой коровы (G для Guernsey и H для Holstein).

Третья строка содержит \(E_1 \dots E_N\).

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

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

Очень жаркое лето. Фермер Дон решил купить некоторое количество кондиционеров.

У ФД имеется \(N\) коров (\(1 \leq N \leq 20\)), которые живут в амбаре, содержащем последовательность стойл, пронумерованные \(1 \ldots 100\). Корова \(i\) занимает диапазон стойл, начиная с \(s_i\) и заканчивая в \(t_i\). Диапазоны стойл, занимаемые коровами, не пересекаются. У коров различные требования к охлаждению. Корова \(i\) должна быть охлаждена на количество \(c_i\). Это значает, что для всех стойл, занимаемых коровой \(i\) температура должна быть уменьшена на \(c_i\) единиц.

Амбар содержит \(M\) кондиционеров, помеченных \(1 \ldots M\) (\(1 \leq M \leq 10\)). \(i\)-ый кондиционер стоит \(m_i\) единиц денег, если работает и охлаждает воздух (уменьшает температуру) в стойлах начиная в \(a_i\) и заканчивая в \(b_i\). Если работает, \(i\)-ый кондиционер уменьшает температуру во всех стойлах этого диапазона на величину \(p_i\) (\(1 \leq p_i \leq 10^6\)). Диапазоны стойл кондиционеров могут перекрываться.

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

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

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

Последующие \(N\) строк описывают коров. \(i\)-ая из этих строк содержит \(s_i\), \(t_i\), \(c_i\).

Последующие \(M\) строк описывают кондиционеры. \(i\)-ая из этих строк содержит \(a_i\), \(b_i\), \(p_i\), \(m_i\).

Для всех тестов, кроме тех, что в примере, можете полагать, что \(M = 10\).

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

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

Имеется \(N\) пастбищ (\(2 \le N \le 2\cdot 10^5\)), соединённых \(N-1\) дорогой, так что ои образуют дерево. Перемещение по каждой дороге занимает одну секунду. В начале на каждом пастбище 0 травы, трава на \(i\)-ом пастбище растёт со скоростью \(a_i\) (\(1\le a_i\le 10^8\)) единиц в секунду. Фермер Джон вначале находится в пастбище 1 и должен удобрить траву на каждом пастбище. Если он посещает пастбище, в котором \(x\) единиц травы, он должен потратить \(x\) единиц удобрений. Удобрять требуется только при первом посещении пастбища и удобрение пастбища занимает 0 единиц времени.

Ввод содержит дополнительный параметр \(T\in \{0,1\}\).

  • Если \(T=0\), ФД должен завершить путь в пастбище 1.
  • Если \(T=1\), ФД может завершить путь в любом пастбище.

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

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

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

Затем для каждого \(i\) от \(2\) до \(N\), имеется строка содержащая \(p_i\) и \(a_i\), означающая что есть дорога соединяющая пастбища \(p_i\) и \(i\). Гарантируется, что \(1\le p_i<i\).

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

Минимальное количество времени и минимальное количество удобрений, разделённые одиночным пробелом.

Беси любит смотреть шоу на сервисе Mooloo. Поскольку Беси очень занятая корова, она создаёт план на следующие \(N\) (\(1 \leq N \leq 10^5\)) дней в течение которых будет смотреть шоу. Mooloo - платный сервис и она хочет минимизировать оплату.

У Mooloo интересная система подписки: она стоит \(d + K\) денег (\(1\le K\le 10^9\)), чтобы подписаться на \(d\) последовательных дней. Вы можете начать подписку в любой день. И Вы можете начать новую подписку, если текущая подписка истекла. Определите минимальное количество денег, чтобы заплатить за просмотр шоу.

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

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

Вторая строка содержит \(N\) целых чисел описывающих дни, в которые Беси планирует смотреть шоу: \(1\le d_1<d_2<\dots<d_N\le 10^{14}\).

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

Рекомендуется использовать 64-битный целый тип для ответа (например "long long" в C/C++).

Беси - голодная корова. Каждый день на обед если есть пакеты сена в амбаре, она съедает ровно один пакет. Чтобы Беси не голодала, Фермер Джон присылает в некоторые дни некоторое количество пакетов с сеном, которые прибывают утром (до обеда). В частности в день \(d_i\), ФД присылает \(b_i\) пакетов сена (\(1\leq d_i \leq 10^{14}\), \(1 \leq b_i \leq 10^9\)).

Вычислите общее количество пакетов сена, которые съест Беси в течение \(T\) дней.

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

Первая строка содержит \(N\) и \(T\) (\(1 \le N \le 10^5\), \(1 \le T \le 10^{14}\)).

Каждая из последующих \(N\) строк содержит \(d_i\) и \(b_i\). Гарантируется, что \(1\le d_1<d_2<\dots < d_N\le T\).

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

Выведите количество пакетов сена, которые съест Беси за первые \(T\) дней.

Для вывода ответа требуется использовать 64-битные целые (например "long long" in C/C++).

Беси - робокорова, также известная как корборг. Она на числовой прямой старается выстрелить по \(T\) \((1 \leq T \leq 10^5)\) целям, расположенным в различных позициях. Беси начинает в позиции \(0\) и и следует строке из \(C\) \((1 \leq C \leq 10^5)\) команд, каждая из которых одна из букв L, F, или R:

  • L: Беси двигается на одну единицу влево.
  • R: Беси двигается на одну единицу вправо.
  • F: Беси стреляет. Если в текущей позиции Беси находится цель, она разрушается и её больше нельзя разрушить.

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

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

Первая строка содержит \(T\) и \(C\).

Следующая строка содержит позиции этих \(T\) целей, различные целые числа в интервале \([-C,C]\).

Следующая строка содержит строку команд длины \(C\), одержащую только символы F, L и R.

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

Выведите максимальное количество целей, которые Беси сможет поразить после изменения одной команды в строке.

Фермер Джон решил потренировать своих коров в акробатике. Сначала он взвесил своих коров и определил, что они имеют \(N\) (\(1\le N\le 2\cdot 10^5\)) различных весов. В частности, для каждой \(i\in [1,N]\), \(a_i\) из его коров имеют вес \(w_i\) (\(1\le a_i\le 10^9, 1\le w_i\le 10^9\)).

Его наиболее популярный трюк включает коров, формирующих сбалансированную башню. Башня это последовательность коров, стоящих одна на другой. Башня называется сбалансированной, если каждая корова с коровой над ней имеет вес не менее чем на (\(1\le K\le 10^9\)) больший, чем вес коровы непосредственно над ней. Каждая корова может быть частью не более чем одной сбалансированной башни.

Если ФД хочет создать не более \(M\) (\(1 \le M \le 10^9\)) сбалансированных башен из своих коров, какое наибольшее количество коров может быть частью некоторой башни?

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

Первая строка содержит три разделённых пробелом целых числа \(N\), \(M\), \(K\).

Следующие \(N\) строк содержат два разделённых пробелом целых числа \(w_{i}\) и \(a_i\). Гарантируется, что все \(w_i\) различны.

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

Выведите максимальное количество коров в сбалансированных башнях, если ФД поможет сформировать эти башни оптимально.

Фермер Джон развозит сено по ферме.

Ферма имеет \(N\) \((1\le N\le 2\cdot 10^5)\) амбаров, расположенных в целых точках \(x_1,\dots, x_N\) \((0 \le x_i \le 10^6)\) на числовой прямой. ФД запланировал \(N\) перевозок сена в некоторую целую точку \(y\) \((0 \le y \le 10^6)\) и затем одну перевозку к каждому амбару.

К несчастью служба доставки очень расточительна. В частности, для некоторых \(a_i\) и \(b_i\) \((1\le a_i, b_i\le 10^6)\), \(a_i\) пакетов сена теряются на единицу расстояния каждой доставки влево и \(b_i\) пакетов сена теряются на единицу расстояния каждой доставки вправо. Формально при транспортировке из точки \(y\) в амбар в точке \(x\), количество теряемых пакетов сена определяется как

\[\begin{cases} a_i\cdot (y-x) & \text{if } y \ge x \\ b_i\cdot (x-y) & \text{if } x > y \end{cases}.\]

Вам даны \(Q\) \((1\le Q\le 2\cdot 10^5)\) независимых запросов, каждый состоит из возможных значений \((a_i,b_i)\), помогите ФД определить наименьшее количество потерянных пакетов сена, если он выберет \(y\) оптимально.

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

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

Следующая строка содержит \(x_1\dots x_N\).

Следующая строка содержит \(Q\).

Каждая из последующих \(Q\) строк содержит два целых числа \(a_i\) и \(b_i\).

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

Выведите \(Q\) строк, \(i\)-ая строка содержит ответ на \(i\)-ый запрос.

Коровы передают две строки \(s\) и \(t\), каждая с длиной не более \(10^5\), состоящие только из маленьких латинских букв от 'a' до 'r'. Вы должны ответить на \(Q\) запросов (\(1 \leq Q \leq 10^5\)). Для каждого запроса нужно ответить, совпадут ли строки, если в каждой из них оставить только указанные в запросе маленькие латинские буквы (удалив все остальные символы).

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

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

Вторая строка содержит \(t\).

Третья строка содержит \(Q\).

Каждая из последующих \(Q\) строк содержит строку запроса. В строке запроса символы не повторяются и задаются в алфавитном порядке. Никакой запрос не появляется более одного раза.

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

Для каждого запроса выведите 'Y', если \(s\) и \(t\), с символами только из запроса будут равны и 'N' в противном случае.

Имеется строка \(s\) длиной не более \(2 \cdot 10^5\) символов (только трёх 'C', 'O', 'W'). Требуется узнать, можно ли её превратить в одну букву 'C', используя следующие операции:

1. Выбрать два соседних одинаковых символа и удалить их.

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

В задаче требуется дать ответ для \(Q\) (\(1\le Q\le 2\cdot 10^5\)) подстрок строки \(s\).

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

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

Вторая строка содержит \(Q\).

Каждая из последующих \(Q\) строк содержит два целых числа \(l\) и \(r\) (\(1\le l\le r\le |s|\), где \(|s|\) означает длину строки \(s\)).

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

Строка длины \(Q\), где \(i\)-ый символ есть 'Y', если \(i\)-ая подстрока может быть сокращена до 'C'. и 'N' в противном случае.

Падают яблоки! В определённые моменты времени некоторое количество яблок падает в некоторые точки числовой прямой. В определённый момент времени некоторые коровы появляются на числовой прямой и НАЧИНАЮТ ловить яблоки.

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

Сколько максимально яблок смогут поймать коровы, если будут действовать сообща оптимально?

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

Первая строка содержит \(N\) (\(1\le N\le 2\cdot 10^5\)), количество раз когда яблоки падали на числовую прямую или там появлялись коровы.

Каждая из последующих \(N\) строк содержит четыре целых числа \(q_i\), \(t_i\), \(x_i\), \(n_i\) (\(q_i\in \{1,2\}, 0\le t_i\le 10^9, 0\le x_i\le 10^9, 1\le n_i\le 10^3\)).

  • Если \(q_i=1\), это значит, что \(n_i\) коров прибыли на числовую прямую в момент времени \(t_i\) в позицию \(x_i\).
  • Если \(q_i=2\), это значит, что \(n_i\) яблок упали на числовую прямую в момент времени \(t_i\) в позицию \(x_i\).

Гарантируется, что все упорядоченные пары \((t_i,x_i)\) различны.

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

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

Фермер Джон пытается сделать совершенную фотографию своих \(N\) коров (\(2 \leq N \leq 2\cdot 10^5\), \(N\) четное).

У ФД есть коровы двух пород Guernseys и Holsteins. Чтобы сделать свою фотографию как можно более эстетичной, он хочет выстроить своих коров так, чтобы как можно больше коров породы Guernseys находились на позициях с чётными номерами (первая позиция в ряду - нечётная, следующая чётная и т.д.). Для перестройки порядка коров он может только попросить "префикс" своих коров четной длины сделать реверс. "Префикс" состоит из диапазона коров от первой коровы до \(j\)-ой коровы для некоторой позиции \(j\).

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

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

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

Вторая строка ввода содержит набор символов длины \(N\), указывающих начальный порядок коров слева направо. Символ 'H' представляет породу Holstein, а символ 'G' представляет породу Guernsey.

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

Выведите минимальное количество реверсов.

У Фермера Джона есть \(N\) (\(1\leq N \leq 10^5\)) стогов из тюков сена. Для каждого \(i\in [1,N]\), \(i\)-ый стог имеет \(h_i\) (\(1\le h_i\le 10^9\)) тюков. Бесси может выполнять следующие операции:

  • Если высоты двух соседних стогов сена различаются не более чем на \(K\) (\(1\le K\le 10^9\)), она может поменять местами два стога

Какую лексикографически минимальную последовательность высот Беси может получить после некоторой последовательности таких операций?

**Примечание: ограничения на время и память для этой задачи 4сек и 512 Мбт, что в 2 раза больше значений по умолчанию.**

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

Первая строка ввода содержит \(N\) и \(K\). \(i+1\)-ая строка содержит высоту \(i\)-того стога.

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

Выведите \(N\) строк, \(i\)-ая строка содержит высоту \(i\)-го стога в решении.

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

Имеется массив отсортированных чисел \(x_1 \leq x_2 \leq \dotsb \leq x_N\) (\(1 \leq N \leq 10^5\)), и целое число \(K\). Вы не знаете массив или \(K\) но Вы знаете для каждого индекса \(i\), наибольший индекс \(j_i\) такой, что \(x_{j_i} \leq x_i + K\). Гарантируется, что \(i\le j_i\) и \(j_1\le j_2\le \cdots \le j_N\le N\).

По заданной информации коровы ФД должны сконструировать любой массив, который соответствует данной информации для некоторого целого \(K\). Конструкция должна удовлетворять условию \(0 \leq x_i \leq 10^{18}\) для всех \(i\) и \(1 \leq K \leq 10^{18}\).

Можно доказать, что это всегда возможно. Помогите коровам ФД решить эту задачу.

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

Первая строка ввода содержит \(N\). Следующая строка содержит \(j_1,j_2,\ldots,j_N\).

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

Выведите \(K\), затем \(x_1,\ldots,x_N\) на отдельных строках. Любой корректный вывод будет принят.

SCORING:

  • Для 50% всех тестов, \(N\le 5000\)
  • Для оставшихся тестов нет дополнительных ограничений.

Автор: Danny Mittal

Drought#90165

\(N\) (\(1 \leq N \leq 100\)) коров Фермера Джона выстроены в ряд так, что \(i\)-ая корова имеет уровень голода \(h_i\) (целое неотрицательное число). Коровы хотят есть вместе, и единственный способ уменьшить уровень голода его коров - выбрать соседнюю пару коров \(i\) и \(i+1\) и дать каждой из них мешок кукурузы, тем самым уменьшить на 1 уровень голода каждой из них.

ФД хочет кормить своих коров пока у всех у них не станет один и тот же уровень голода - целый, неотрицательный. Хотя он не знает точно уровень голода каждой из своих коров, он знает верхнюю границу уровня голода каждой коровы, то есть уровень голода \(i\)-ой cow \(h_i\) не более \(H_i\) (\(0\le H_i\le 1000\)).

Ваша задача - посчитать по модулю \(10^9+7\) количество комбинаций из \(N\) уровней голода \([h_1,h_2,\ldots,h_N]\) таких, что ФД сможет достичь своей цели.

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

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

Вторая строка содержит \(H_1,H_2,\ldots,H_N\).

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

Количество комбинаций из \(N\) чисел уровней голода по модулю \(10^9+7\).

Коровы играют с двумя игральными костями X и Y. Побеждает та кость, на которой больше очков. Если выпало одинаковое число, кости бросаются повторно, пока не выпадут разные числа. Мы говорим, что кость X бьёт кость Y, если более вероятно, что кость X выиграет у Y.

Рассмотрим 4-гранные кости

Кость A имеет числа 4, 5, 6, 7 на своих гранях.

Кость B имеет числа 2, 4, 5, 10 на своих гранях.

Кость C имеет числа 1, 4, 8, 9 на своих гранях.

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

Вам дали числа на гранях двух 4-гранных костей A и B. Помогите коровам определить, есть ли способ назначить числа на гранях третьей кости С так, чтобы множество стало "не-транзитивным". Числа на всех гранях всех костей - целые в интервале от 1 до 10 включительно.

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

Каждый ввод состоит из нескольких независимых тестов, каждый из которых нужно решить правильно, чтобы пройти весь тест. Первая строка ввода содержит \(T\) (\(1\le T\le 10\)) - количество тестов.

Каждая из следующих \(T\) строк описывает один тест 8 числами: 4 числа на гранях кости A и 4 числа на гранях кости B. Все числа от 1 до 10, не обязательно в отсортированном порядке. Одно и тоже число может появиться несколько раз, даже на одной кости.

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

Выведите \(T\) строк. \(k\)-ая строка должна быть 'yes' если возможно спроектировать C, чтобы сделать множество "не-транзитивным", иначе вывести 'no'.

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