QOJ.ac

QOJ

Time Limit: 4 s Memory Limit: 256 MB Total points: 100

#1191. 重新排列文档

Statistics

Susan 擅长整理餐桌,但并不擅长整理办公桌。

Susan 刚刚处理完一堆文件,这些文件现在仍然堆在她的桌子上。它们有各自的序列号,当老板把它们拿来时,它们是按顺序堆放的。然而,现在的顺序并不完美,因为她太懒了,没有把滑出堆的文件放回正确的位置。老板听说她处理完了,想要她立即把文件放进他送来的文件盒里。当然,文件应该按序列号的顺序存放在盒子里。

桌子上有足够的空间再放两个文件堆,Susan 计划在那里建立两个临时堆。当前堆中的所有文件都要从顶部开始,一个接一个地移动到两个临时堆中的任意一个。由于匆忙中把这些堆叠得太高会导致它们倒塌,因此不能在上面放置太多的文件。在将所有文件移动到临时堆并收到文件盒后,两个堆中的文件将从顶部开始,一个接一个地移入盒中。为了能按顺序移入盒子,两个堆中的文件必须按序列号的降序排列。

例如,假设堆中有六个文件,从顶部到底部依次为 1, 3, 4, 2, 6, 5,并且临时堆最多只能容纳三个文件。那么,她可以形成两个临时堆,一个从顶部开始依次为 6, 4, 3,另一个为 5, 2, 1(见图)。两个临时堆都是降序排列的。然后,比较两个临时堆顶部文件的序列号,将较大的一个(本例中为 6)移除并首先放入文件盒。重复此过程,所有文件都将完美地按顺序存放在文件盒中。

Susan 想知道对于当前堆中的文件,这个计划是否可行,如果可行,有多少种不同的堆叠方式。请你编写一个程序来计算不同方式的数量,如果计划不可行,则应输出 0。

由于堆中的每个文件都可以移动到两个临时堆中的任意一个,对于 $n$ 个文件,总共有 $2^n$ 种组合方式,但其中一些可能会破坏临时堆的降序排列,因此是不合适的。

上述例子对应于样例输入的第一种情况。在这种情况下,最后两个文件 5 和 6 可以交换它们的目的地。此外,交换两个临时堆的角色也是完全可以的。由于任何其他移动序列都会使其中一个堆的高度超过 3 和/或使其顺序混乱,因此在这个例子中,将文件堆叠到临时堆的不同方式总数为 $2 \times 2 = 4$。

输入格式

第一行包含两个整数 $n$ 和 $m$。其中 $n$ 是堆中的文件数量 ($1 \le n \le 5000$),$m$ 是一个临时堆在不冒倒塌风险的情况下可以堆叠的文件数量 ($n/2 \le m \le n$)。下一行包含数字 $s_1$ 到 $s_n$;这些数字是文件堆中从顶部到底部的序列号。保证所有 1 到 $n$ 的数字恰好出现一次。

输出格式

输出一行,包含一个整数,表示符合目标要求的形成两个临时堆的方法数。

如果没有任何选择可行,方法数自然为 0。如果可能的方法数大于或等于 $10^9 + 7$,则输出方法数对 $10^9 + 7$ 取模的结果。

样例

样例输入 1

6 3
1 3 4 2 6 5

样例输出 1

4

样例输入 2

6 6
1 3 4 2 6 5

样例输出 2

8

样例输入 3

4 4
4 3 1 2

样例输出 3

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.