![](https://img-blog.csdnimg.cn/img_convert/f1712492fdd2b1f15273e08e2d8e225f.png)
样例输入
8
5
5 3 3 3 5
4
5 3 4 5
8
1 2 3 4 5 6 7 8
6
10 5 4 3 2 1
3
3 3 1
3
42 43 42
2
100000000 99999999
6
29613295 52036613 75100585 78027446 81409090 73215
样例输出
4
-1
0
42
2
-1
100000000
40741153
![](https://img-blog.csdnimg.cn/img_convert/24706e3383edf640ca6172641549eed0.png)
思路:感觉就是一道高中的不等式求解
(高中不算难的东西,到了大学反而变难了,甚至推着推着自己都懵住了)
下面是手推过程
![](https://img-blog.csdnimg.cn/img_convert/b30f3a3e2aaaaa2d1cebfdadb1a42907.jpeg)
代码:
#include<bits/stdc++.h>
using namespace std;
const int inf=1e9+7;
int main()
{
int T;
cin>>T;
while(T--){
int n;
cin>>n;
int mx=inf,mn=0;
vector<int> a(n);
for(int i=0;i<n;i++) cin>>a[i];
for(int i=0;i<n-1;i++){
if(a[i]<a[i+1]) mx=min(mx,(a[i]+a[i+1])/2);
else if(a[i]>a[i+1]) mn=max(mn,(a[i]+a[i+1]+1)/2);
}
if(mn>mx) cout<<"-1"<<endl;
else cout<<mn<<endl;
}
}