#1683. 「USACO 2025 Open Platinum」Lazy Sort

内存限制
512 MiB
时间限制
2000 ms
标准输入输出
题目类型
传统
评测方式
文本比较
上传者 admin
原题 usaco

题目描述

农夫约翰(Farmer John)有 )头奶牛,他试图让它们依靠自身的懒惰性来排序一个长度为 的非负整数数组 。他有很多沉重的箱子,所以他把奶牛们排成一列,其中奶牛 在奶牛 的后面,并给奶牛 分配 )个箱子。

奶牛们天生就很懒,所以它们总是想把工作推给别人。从奶牛 ,每头奶牛依次看向它后面的奶牛。如果奶牛 的箱子严格多于奶牛 ,奶牛 会认为这“不公平”,并把它的一个箱子交给奶牛 。这个过程会一直重复,直到每头奶牛都满意为止。

然后,农夫约翰会记下每头奶牛 持有的箱子数量 ,并用这些值创建一个数组 。如果 (即 排序后的结果),那么农夫约翰就会很高兴。不幸的是,农夫约翰忘记了 中除了 )个值之外的所有值。幸运的是,这些记住的值包括了他打算给第一头和最后一头奶牛的箱子数量。FJ 记住的每个值都以 的形式给出,表示 )。请确定有多少种不同的方法可以填补缺失的值,使得他在奶牛们完成懒惰排序后会感到高兴,结果对 取模。

输入格式

第一行包含两个空格分隔的整数 ,分别代表奶牛的数量和查询(记住的值)的数量。

接下来的 行,每行包含两个空格分隔的整数 ,表示奶牛 最初持有 个箱子。保证 ,并且 (奶牛的编号是严格递增的)。

输出格式

输出可以分配 值的方法数量,使得农夫约翰在奶牛执行懒惰排序后感到高兴,结果对 取模。保证至少存在一种有效的分配方案。

样例

输入 #1

3 2
1 3
3 2

输出 #1

2

输入 #2

6 3
1 1
3 3
6 5

输出 #2

89

数据范围与提示

样例 1 解释

在这个例子中,FJ 记住了数组两端的值。数组 是有效的数组,它们会在懒惰排序结束时让 FJ 高兴。

测试点限制

  • 测试点 3-4:
  • 测试点 5-6:
  • 测试点 7-9:
  • 测试点 10-12:
  • 测试点 13-15: 无额外限制。