题目大意:
有1队蚂蚁在一个lcm的山洞里,移动速度是1cm/s。当走到洞的任何一段,蚂蚁就脱离洞了。当两个蚂蚁按相反方向走,碰面时,立马掉头。现在我们给出蚂蚁的初始位置,但我们不知道蚂蚁走动的方向。你的任务是算出蚂蚁最早和最晚脱离洞的时间。
解题思路:
以洞的中点为界,最早的话,肯定蚂蚁朝着离自己最近的一端走。至于相反方向,我们可以看成蚂蚁换了个身份继续向前走。最晚的话,我们肯定蚂蚁朝着离自己最远的一端走。
代码如下:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int n,a,x,y,min,max,i,k,l;
scanf("%d",&n);
while(n--)
{
scanf("%d%d",&x,&y);
scanf("%d",&a);
min=abs(a-x/2);max=abs(a-x/2);
k=a;l=a;
for(i=1;i<y;i++)
{
scanf("%d",&a);
if(min>abs(a-x/2))
{
min=abs(a-x/2);
k=a;
}
if(max<abs(a-x/2))
{
max=abs(a-x/2);
l=a;
}
}
printf("%d %d",k<x-k?k:x-k,l>x-l?l:x-l);
if(n)
printf("\n");
}
return 0;
}