不会什么高级算法,就用一个双层循环写一下吧
#include<iostream>
#include<cmath>
using namespace std;
int n,m,a[1000],sum=0,MIN=100000;
int main()
{
while(cin>>n>>m)
{
for(int i=0;i<m;i++)
{
cin>>a[i];
}
MIN=1000000;
int cha,MAX;//差表示每个人移动到目标地点的距离,max表示移动最多的位置
for(int i=1;i<=n;i++)//集合位置
{
sum=0,MAX=0;
for(int j=0;j<m;j++)//每人位置
{
cha=abs(a[j]-i);//离集合点的距离
if(cha>=n/2)//(不会什么高级的算法)如果距离大于总的一般,就从反方向走
cha=n-cha;
if(cha>MAX) MAX=cha;
}
if(MAX<MIN) MIN=MAX;
}
cout<<MIN<<endl;
}
return 0;
}</cmath></iostream>