题目描述
给定一个长度为 n 的序列 a 和两个参数 m、k。
现在另有一个长度为 n 的序列 b。最开始 b 中的每一个元素均为 0。
称如下为一个 x 操作(x≥0):
- 选定一个整数 i,满足 1≤i≤n。
- 对于 ∀i≤j≤min,给 b_j 加上 (x-(j-i))^k。
找到并输出最小的 x 使得至少存在一种情况满足:
- 对 b 做 m 次 x 操作后,\forall 1\le i\le n,b_i\ge a_i。
若不存在任何一个满足要求的 x,输出 -1
。
输入格式
第一行三个整数,表示 n,m 和 k。
第二行 n 个整数,第 i 个表示 a_i。
输出格式
一行共一个整数,表示满足要求的最小的 x。
样例输入 #1
5 3 0
1 1 2 3 1 2
样例输出 #1
3
样例解释 #1
一个合法的选择是 i=1,3,3。
第一次 3 操作后,b=[1,1,1,1,1,1];
第二次 3 操作后,b=[1,1,2,2,2,2];
第三次 3 操作后,b=[1,1,3,3,3,3]。
容易证明不存在一个合法选择使得 x\lt 3。
样例输入 #2
5 2 1
13 21 17 16 13
样例输出 #2
12
样例解释 #2
一个合法的选择是 i=1,1。
第一次 12 操作后,b=[12,11,10,9,8];
第二次 12 操作后,b=[24,22,20,18,16]。
容易证明不存在一个合法选择使得 x\lt 12。
样例输入 #3
5 2 2
13 21 17 16 13
样例输出 #3
6
样例解释 #3
一个合法的选择是 i=1,3。
第一次 6 操作后,b=[36,25,16,9,4];
第二次 6 操作后,b=[36,25,52,34,20]。
容易证明不存在一个合法选择使得 x\lt 6。
数据范围与约定
本题目采用 \text{subtask} 测试。
按照惯例,规定 {0^0=1}。
对于 100\% 的数据,1\le n\le 10^5,k\in{\left\{0,1,2\right\}},1\le a_i\le 10^5,1\le m\le 10^6。
具体数据范围如下:
\text{subtask 1(05pts)}:k=0,1\le n,a_i\le 5;
\text{subtask 2(15pts)}:k=0;
\text{subtask 3(10pts)}:k=1,1\le n,a_i\le 1000;
\text{subtask 4(20pts)}:k=1;
\text{subtask 5(20pts)}:k=2,1\le n,a_i\le 1000;
\text{subtask 6(30pts)}:k=2。