给定一个长度为 的正整数数组 ,其中每个数都在 到 之间,从左到右排成一排。现在要将每个数字染成红色或者绿色,我们定义一个染色方案为优秀的染色方案,当且仅当它满足:
- 每个数 要么被染成红色,要么被染成绿色。
- 红色的数从左到右依次严格递增,绿色的数从左到右依次严格递减。
例如: 中,将 染成红色, 染成绿色是优秀的染色方案(); 染成红色, 染成绿色也是优秀的染色方案()。但是将 染成红色, 染成绿色则不是优秀的染色方案,因为 不是递增的。 中,将 和任意一个 染色红色, 和另一个 染成绿色,也是优秀的染色方案(其中一种是 )。
如果一个数组至少存在两个不同的优秀的染色方案,那么称这个数组是完美的。(两个染色方案不同当且仅当至少存在一个位置上的数字被染成不同的颜色)。
例如, 和 都是完美的,因为上面已经分别给出了 种优秀的染色方案。而 则不是完美的,因为找不到任何一种优秀的染色方案。同时 也不是完美的,因为仅存在一种优秀的染色方案()。
补充说明:如果红色的数只有 个或者 个,我们也认为它严格递增;同理如果绿色的数只有 个或者 个,我们也认为它严格递减。例如 , 都是优秀的的染色方案,因此 123 是完美的数组。
我们定义一种给染色方案打分的方式。
对于每个的有序元素对 :
- 如果 染成红色,且 ,则该元素对得 分;
- 如果 染成绿色,且 ,则该元素对得 分;
- 不满足 1 或 2 ,则该元素对得 分。
则一个染色方案的得分为所有有序元素对的得分和。
一个完美的数组的得分为它所有优秀的染色方案的得分的最大值。
现在确定数组 的前 个数 , 你需要回答以下两个问题:
- 第一问:有多少种确定 中后 个数的方案使得 是一个完美数组?
- 第二问:所有可能的完美数组的得分和是多少?
由于答案太大,你只需要输出答案在模 下的结果即可。