#P17290. [ONTAK 2014] 打砖块(Arkanoid)

[ONTAK 2014] 打砖块(Arkanoid)

题目描述

Bajtek 正在玩经典游戏 Arkanoid。屏幕上方有若干列大小相同的方块,每一列都紧贴屏幕上边缘。任意时刻,只能攻击所有列中最下方的方块。

一个局面可以用每一列中方块的数量来描述。某一时刻,Bajtek 注意到每一列的高度都互不相同。

他的表弟 Bitek 会进行恰好 kk 次操作。每次操作,他选择一个连续的列区间 [l,r][l,r],Bajtek 随后把这个区间内所有列的高度都降低到该区间中的最小高度。也就是说,若操作前高度为 h1,h2,,hnh_1,h_2,\ldots,h_n,则区间 [l,r][l,r] 中所有 hih_i 都会变为 minljrhj\min_{l\le j\le r}h_j

Bajtek 想知道:恰好执行 kk 次这样的操作后,一共可能得到多少种不同的局面?如果两个局面至少有一列高度不同,则认为它们不同。

输入格式

第一行包含两个整数 n,kn,k,分别表示列数和操作次数:

  • 1n3001\le n\le 300
  • 0k3000\le k\le 300

第二行包含 nn 个两两不同的非负整数 h1,h2,,hnh_1,h_2,\ldots,h_n,满足 0hi1090\le h_i\le 10^9

部分测试中还有以下限制:

  • 5%5\% 的数据满足 k1k\le 1
  • 另有 5%5\% 的数据满足 n20n\le 20k2k\le 2
  • 合计 50%50\% 的数据满足 n,k100n,k\le 100

输出格式

输出一个整数,表示执行恰好 kk 次操作后可能得到的不同局面数,对 109+3310^9+33 取模。

样例输入

3 2
3 0 2

样例输出

4

样例说明

初始局面为 [3,0,2][3,0,2]。一次操作后可能得到 [0,0,2][0,0,2][3,0,2][3,0,2][0,0,0][0,0,0][3,0,0][3,0,0]。继续再做一次操作不会产生新的局面。