列车跟踪[2]
时间限制:1秒 内存限制:256M
【问题描述】
每天特快列车都会经过农场。列车有N节车厢,每节车厢上有一个 \(1\) 到 \(10^9\) 之间的正整数编号;不同的车厢可能会有相同的编号。
平时,贝西会观察驶过的列车,记录车厢的编号。但是今天雾实在太浓了,贝西一个编号也看不见!幸运的是,她从城市里某个可靠的信息源获知了列车编号序列的所有滑动窗口中的最小值。具体地说,她得到了一个正整数 \(K\),以及 \(N−K+1\) 个正整数 \(c_1,…,c_{N+1−K}\),其中 \(c_i\) 是车厢 \(i,i+1,…,i+K−1\) 之中编号的最小值。
帮助贝西求出满足所有滑动窗口最小值的对每节车厢进行编号的方法数量。由于这个数字可能非常大,只要你求出这个数字对\(10^9+7\) 取余的结果贝西就满意了。
贝西的消息是完全可靠的;也就是说,保证存在至少一种符合要求的编号方式。
【输入格式】
输入的第一行包含两个空格分隔的整数 \(N\) 和 \(K\)。
余下的行包含所有的滑动窗口最小值 \(c_1,…,c_{N+1−K}\),每行一个数。
【输出格式】
输出一个整数:对每节车厢给予一个不超过 \(10^9\) 的正整数编号的方法数量对 \(10^9+7\) 取余的结果,满足车厢 \(i,i+1,…,i+K−1\) 之中编号的最小值等于 \(c_i\),对于 \(1≤i≤N−K+1\) 均成立。
【输入输出样例】
Input
4 2
999999998
999999999
999999998
Output
3
【数据限制】,
\(100\%\) 的数据满足:\(1≤N≤10^5\)
【来源】
Mr.he