有长度为n的数组序列a,想对数组中的每个数字只进行一次修改,他可以将数字ai修改为 ai + (0~ k)或ai - (0~ k) ,其中 1≤i≤n,k为正整数。请问调整后数组元素的最大值减去最小值的最小差值是多少?
第一行输入两个正整数 n,k。n表示元素的个数,k表示在原先的基础上,可以调整的值的范围,具体意义详见题目描述。
第二行输入 n 个数,表示序列 a;
输出一个数字表示答案。
- 5 3
- 1 5 3 2 4
0
数据范围
对于 10% 的数据,有 n=2,1≤ai≤10,1≤k≤10。
对于另外25% 的数据,有2≤n≤103,1≤ai≤10,1≤k≤10。
对于另外25% 的数据,有2≤n≤105,0≤ai≤109,1≤k≤109。
对于另外40% 的数据,有2≤n≤105,0≤ai≤1018,1≤k≤1018。
C++:
- #include
- using namespace std;
- int zt(int a){
- if(a<=0)return 0;
- else
- return a;
- }
- int main(){
- int a,b,c[100005],maxn=INT_MIN,minn=INT_MAX;
- cin>>a>>b;
- for(int i=1;i<=a;i++){
- cin>>c[i];
- maxn=max(maxn,c[i]);
- minn=min(minn,c[i]);
- }
- cout<<zt(maxn-minn-b-b);
- }