题解:P11797 【MX-X9-T1】『GROI-R3』Another Me
题目传送门
形式化题意
- 所谓让 \(\max\limits_{i=1}^n \lvert a_i \rvert\) 最小,实际上就是令数列中的最小值和最大值的绝对值最接近。
- 换句话说,最优操作就是令他们的绝对值相等。
- 也就是说,这个数就是数轴上他们组成线段的中点,或是说这两个数的平均值。
- 因此令数列中最大值为 \(a_{max}\),最小值为 \(a_{min}\),则答案为 $\lceil \frac{|a_{max}-a_{min}|}{2} \rceil $。
代码实现
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1e6+10;
ll T,a[MAXN],n;
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
cout<<(abs(a[n]-a[1])+1)/2;
return 0;
}