多多现在需要你帮助解决一个难题,多多得到了一个由 n 个整数 a1,a2,…,an 构成的序列 a 和额外的一个整数 x,多多的任务是排序序列 a 使其变为正序列,其中只要序列 a 满足 a1≤a2≤…≤an 就认为是一个正序列。
为了让序列 a 变成正序列,多多被允许可以重复多次做这样一个操作:选择序列 a 中的一个整数 ai(1≤i≤n) 且满足 ai>x,然后交换 ai 和 x。
给定长度为 n 的序列 a 和一个额外的数 x,每次只能选择一个满足 ai>x 的位置 i,将 ai 与 x 交换。目标是使 a 变为非递减序列,求最少操作次数,若无法完成则输出 -1。
定义状态 dp[l][x0] 表示当前已处理前缀,使得前缀末尾值为 l,当前 x 的值为 x0 时所需的最少交换次数。为了压缩状态,注意: