很简单的枚举题,具体往下看注释部分

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e3+10;
const int inf=0x3f3f3f3f; 

int a[maxn];

int main(){
	int n,m;
	while(cin>>n>>m){
		int x;
		vector<int> v;
		for(int i=0;i<m;i++){
			cin>>x;
			v.push_back(x);
		}
		int ans=inf;
		for(int i=1;i<=n;i++){	//集合位置 如1
			int mx=0;
			for(int j=0;j<m;j++) {
				int p=v[j];
				//一个人无论怎么走,都会是俩种情况 2到1,2-1或5-(2-1)
				int a=abs(p-i),b=n-a; 
				mx=max(mx,min(a,b));//每人到集合点最长时间 
			}
			ans=min(mx,ans);//每个集合点的最短时间 
		}
		cout<<ans<<endl;
		v.clear();
	}
}