代码(乱 如下:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,maxi=0,mini=0x3fffffff;
int midd,kin,que;
bool ai;
cin>>n>>m;
int a[n+1];
for(int i=1;i<=n;i++)
{
cin>>a[i];
maxi=max(a[i],maxi);
mini=min(a[i],mini);
}
midd=(maxi+mini)/2;
kin=abs(maxi-midd);
que=abs(midd-mini);
if(kin>que) ai=1;
else ai=0;
for(int i=1;i<=m;i++)
{
if(ai=1)
{
if(maxi>=2)
maxi=maxi*2;
else maxi=maxi+2;
}
else if(ai=0)
{
if(mini>=4)
mini=mini/2;
else mini=mini-2;
}
}
cout<<maxi-mini;
return 0;
}
思路:
找最大、最小
取中位数
判断与中位数差的大小(取差大)
最大差大
x>=2(*2)
x<2(+2)
最小差大
x>=4(/2)
x<4(+2)
#1#5过不去,求助!!!谢谢!!!