这道题题意就是知道士兵的位置,然后不知道他们走的方向,当两个士兵相遇时,那么另一个士兵就会转身下桥,注意他在下桥的同时并不影响他对面士兵下桥的时间(因为一个士兵下桥,而另一士兵也跟在后面一起动的);
所以就只需要找每个士兵到两个端点的距离的最大值就是最大时间了;
而找最小时间,就是找每个士兵到两个端点的距离的最小值的最大值,意思就是这个意思:
那这个肯定就是位置在6的士兵是最后一个走的;
所以AC代码:
#include<bits/stdc++.h>
using namespace std;
int a[5050],L,n;
int main(){
scanf("%d%d",&L,&n);
for(int i=0;i<n;i++){
scanf("%d",a+i);
}
sort(a,a+n);//排序
int Max=0,Min=0;
for(int i=0;i<n;i++){
Max=max(Max,max(L-a[i]+1,a[i]));//求最大值
Min=max(Min,min(L-a[i]+1,a[i]));//求最小值的最大值;
}
printf("%d %d\n",Min,Max);
return 0;
}