原题链接:http://poj.org/problem?id=1852
poj已通过。
#include <iostream>
#include<algorithm>
using namespace std;
int L,n;
int x[1000000];
void solve()
{
int minT=0;
int maxT=0;
for(int i=0; i<n; i++)
{
minT=max(minT,min(x[i],L-x[i]));
maxT=max(maxT,max(x[i],L-x[i]));
}
cout<<minT<<" "<<maxT<<endl;
}
int main()
{
ios::sync_with_stdio(false);//不加的话会超时
int num;
cin>>num;
while(num--)
{
cin>>L>>n;
for(int i=0; i<n; i++)
{
cin>>x[i];
}
solve();
}
return 0;
}
该题目的关键点在于当两个蚂蚁相遇时,各自往回走的情况等价于两只蚂蚁按原来的方向继续走。类似于小球的弹性碰撞。