解题思路:
我们直接忽略蚂蚁的相遇事件,假设所有的蚂蚁即使相遇了也不会做出改变,仍然走自己的路。这样每一个蚂蚁掉落的时间就只有2个取值,一个是向左走的时间,一个是向右走的时间,全部掉落的最早时间是每只蚂蚁尽快掉落用时的最大值,因为这些蚂蚁现在互不干扰,同理,全部掉落的最迟时间就是每只蚂蚁尽量慢掉落用时的最大值。
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n,l,m,a[110000],maxT,minT;
cin>>n; //输入测试样例组数
while(cin>>l>>m)
{
int maxT=0;minT=0;//每次都要重新清空为0!
for(int i=0;i<m;i++)
cin>>a[i];
//计算最长和最短时间
for(int i=0;i<m;i++)
{
maxT=max(maxT,max(a[i],l-a[i]));
minT=max(minT,min(a[i],l-a[i]));
}
cout<<minT<<" "<<maxT<<endl;
}
return 0;
}