A89660.「USACO 2025 US Open Platinum」Lazy Sort
省选/NOI-
通过率:0%
时间限制:2.00s
内存限制:256MB
题目描述
题目译自 USACO 2025 US Open Contest, Platinum Problem 2. Lazy Sort
Farmer John 养了 N(2≤N≤5⋅106)头牛,他想利用这些牛的懒惰天性来排序一个长度为 N 的非负整数数组 A。他手头有许多沉重的箱子,于是他把牛排成一列,从前往后依次编号为 1 到 N,其中第 i+1 头牛站在第 i 头牛后面,然后给第 i 头牛分配 ai(0≤ai)个箱子。
牛天生懒惰,总想把活儿推给别人。从第 1 头牛到第 N−1 头牛,每头牛都会回头看看身后的牛。如果第 i 头牛的箱子数量严格多于第 i+1 头牛,它会觉得这不公平,于是把自己的一只箱子递给后面的牛。这个过程会一直重复,直到每头牛都满意为止。
之后,Farmer John 会记录每头牛 i 最终持有的箱子数量 bi,并以此组成数组 B。如果 B=sorted(A),也就是数组 A 的升序排列,Farmer John 就会很开心。可惜的是,他只记得数组 A 中的 Q(2≤Q≤min(N,100))个值,不过幸运的是,这些值包括他打算给第一头牛和最后一头牛的箱子数量。他记得的每个值以 civi 的形式给出,表示 aci=vi(1≤ci≤N,1≤vi≤109)。请你帮他计算,有多少种不同的方法可以填入缺失的值,使得懒牛排序后他会开心,结果对 109+7 取模。
输入格式
第一行包含两个空格分隔的整数 N 和 Q,分别表示牛的数量和已知值的数量。
接下来的 Q 行,每行包含两个空格分隔的整数 civi,表示第 ci 头牛最初持有 vi 个箱子。保证 c1=1,cQ=N,且 ci<ci+1(牛的编号严格递增)。
输出格式
输出一个整数,表示在懒牛排序后能让 Farmer John 开心的不同赋值方式数量,对 109+7 取模。保证至少存在一种有效赋值。
输入输出样例
输入#1
3 2 1 3 3 2
输出#1
2
输入#2
6 3 1 1 3 3 6 5
输出#2
89