#5219. Problem 3. Train Tracking 2

0

Problem 3. Train Tracking 2

Problem 3. Train Tracking 2

USACO 2019 January Contest, Platinum

每天特快列车都会经过农场。列车有NN节车厢(1N1051 \leq N \leq 10^5),每节车厢上有一个1110910^9之间的正整数编号;不同的车厢可能会有相同的编号。

平时,Bessie会观察驶过的列车,记录车厢的编号。但是今天雾实在太浓了,Bessie一个编号也看不见!幸运的是,她从城市里某个可靠的信息源获知了列车编号序列的所有滑动窗口中的最小值。具体地说,她得到了一个正整数KK,以及NK+1N-K+1个正整数c1,,cN+1Kc_1,\dots,c_{N+1-K},其中cic_i是车厢i,i+1,,i+K1i, i+1, \dots, i+K-1之中编号的最小值。

帮助Bessie求出满足所有滑动窗口最小值的对每节车厢进行编号的方法数量。由于这个数字可能非常大,只要你求出这个数字对109+710^9 + 7取余的结果Bessie就满意了。

Bessie的消息是完全可靠的;也就是说,保证存在至少一种符合要求的编号方式。

输入格式(文件名:tracking2.in):

输入的第一行包含两个空格分隔的整数NNKK。余下的行包含所有的滑动窗口最小值c1,,cN+1Kc_1,\dots,c_{N+1-K},每行一个数。

输出格式(文件名:tracking2.out):

输出一个整数:对每节车厢给予一个不超过10910^9的正整数编号的方法数量对109+710^9 + 7取余的结果,满足车厢i,i+1,,i+K1i, i+1, \dots, i+K-1之中编号的最小值等于cic_i,对于1iNK+11 \leq i \leq N-K+1均成立。

输入样例:


4 2
999999998
999999999
999999998

输出样例:


3

供题:Dhruv Rohatgi