QOJ.ac

QOJ

時間限制: 9 s 記憶體限制: 1024 MB 總分: 10

#8410. Сплетение строк [A]

统计

Под отрезком в числовой последовательности $C$ мы понимаем любую её непустую и непрерывную подпоследовательность. В частности, это означает, что любая последовательность длины $k$ имеет $\frac{k(k+1)}{2}$ отрезков, так как каждый отрезок определяется его началом и концом.

Для данной последовательности целых чисел её стабильностью мы назовем длину самого длинного строго монотонного отрезка в ней. Точнее, стабильность последовательности $[c_1, c_2, \dots, c_k]$ — это наибольшее такое целое число $s$, что существует индекс $i$ ($1 \le i \le k - s + 1$), такой что $c_i < c_{i+1} < \dots < c_{i+s-1}$ или $c_i > c_{i+1} > \dots > c_{i+s-1}$. Например, стабильность последовательности $[8, 6, 1, 3, 5, 7, 4, 2]$ равна 4, так как в ней существует строго монотонный отрезок $[1, 3, 5, 7]$, а более длинного не существует.

Сплетением двух последовательностей $A$ и $B$ мы называем любую последовательность длины $|A| + |B|$, которая содержит такую подпоследовательность (не обязательно непрерывную), равную $A$, что все элементы вне этой подпоследовательности образуют последовательность $B$. Например, сплетениями последовательностей $[1, 2, 3]$ и $[4, 5]$ являются последовательности $[1, 4, 2, 5, 3]$, $[4, 5, 1, 2, 3]$ и $[4, 1, 5, 2, 3]$, но не $[1, 2, 3, 4, 3]$ и $[1, 2, 3, 5, 4]$.

Наконец, через $f(A, B)$, где $A$ и $B$ — последовательности целых чисел, мы обозначаем минимально возможную стабильность их сплетения.

Имея две последовательности целых чисел $A$ и $B$ длины $n$ и $m$ соответственно, ваша задача — вычислить для каждого целого числа $x$ от 1 до $n + m$ включительно количество пар $(A', B')$ таких, что $A'$ является отрезком в $A$, $B'$ является отрезком в $B$ и выполняется $f(A', B') = x$. Поскольку искомые числа могут быть очень большими, достаточно вывести их остатки от деления на $10^9 + 7$.

Вы можете считать, что все элементы последовательностей $A$ и $B$ попарно различны.

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

В первой строке входных данных находятся два целых числа $n$ и $m$ ($1 \le n, m \le 300\,000$), обозначающие длины последовательностей $A$ и $B$ соответственно.

Во второй строке находится последовательность из $n$ целых чисел $A_1, A_2, \dots, A_n$ ($1 \le A_i \le n + m$) — упомянутая последовательность $A$.

В третьей строке находится последовательность из $m$ целых чисел $B_1, B_2, \dots, B_m$ ($1 \le B_i \le n + m$) — упомянутая последовательность $B$.

Гарантируется, что все элементы последовательностей $A$ и $B$ попарно различны. Иными словами, конкатенация последовательностей $A$ и $B$ образует перестановку чисел от 1 до $n + m$.

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

В единственной строке стандартного вывода должны находиться $n + m$ чисел, разделенных одиночными пробелами; $i$-е из этих чисел должно быть равно остатку от деления на $10^9 + 7$ количества пар $(A', B')$ таких, что $A'$ является отрезком в последовательности $A$, $B'$ является отрезком в последовательности $B$ и выполняется $f(A', B') = i$.

Примеры

Пример 1

5 3
1 2 5 7 4
8 3 6
0 84 6 0 0 0 0 0

Примечание

Для отрезков, являющихся целыми последовательностями, выполняется $f([1, 2, 5, 7, 4], [8, 3, 6]) = 2$, а их сплетением со стабильностью, равной 2, является, например, последовательность $[1, 8, 2, 5, 3, 7, 4, 6]$.

Если мы рассмотрим отрезки $[1, 2, 5, 7]$ и $[3]$, то получим $f([1, 2, 5, 7], [3]) = 3$, а их сплетением со стабильностью, равной 3, является, например, последовательность $[1, 2, 5, 3, 7]$. Можно показать, что пару последовательностей $([1, 2, 5, 7], [3])$ нельзя сплести так, чтобы получить последовательность со стабильностью меньше 3.

Для отрезков $[4]$ и $[6]$ выполняется $f([4], [6]) = 2$, а хорошими примерами являются оба их возможных сплетения: $[4, 6]$ и $[6, 4]$.

Каждую пару отрезков в этом примере можно сплести так, чтобы стабильность полученного сплетения была не больше 3. Следовательно, ответы для $x \ge 4$ равны 0.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.