点击打开链接http://poj.org/problem?id=1852
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int M=101000;
int a[M];
int main()//每个ant的最晚掉落时间 (如果两只蚂蚁碰到会改变方向)
{ //A L , B, R -> A R B,L
int t,i,j,k,Min,Max,n,l; // 不考虑对蚂蚁进行区分 不影响最终结果 :每个ant的最晚掉落时间
cin>>t; // 蚂蚁 方向L ,蚂蚁方向 R 碰完后 蚂蚁 R ,蚂蚁 L 可以当作两只蚂蚁碰到后 擦肩而过)
while(t--)
{
cin>>l>>n;
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
Max=Min=-1;
for(i=1;i<=n;i++)
{
k=min(a[i],abs(l-a[i])); // 每个ant的最快掉落时间
if(Min<k) // 每只都朝着靠近端点的方向走 就不会碰到
Min=k;
k=max(a[i],abs(l-a[i])); //
if(Max<k)
{
Max=k;
}
}
cout<<Min<<' '<<Max<<endl;
}
return 0;
}