//换个角度看问题,找到问题的实质,相同的性质东西可以做相同的转化处理,比如这里的蚂蚁都是一样的,所以可以看做擦肩而过。
题目描述
一群蚂蚁在长为lcm的水平竿上爬行,每一只的速度都恒为1cm/s。当一只正在爬行的蚂蚁到达竿子的边缘时,它会立即从杆上掉落。当两只蚂蚁相遇时,它们会各自反向爬回去。我们知道每只蚂蚁原来距离杆子左端的距离,但不幸的是,我们不知道它当前的方向。你的任务是计算所有蚂蚁都从竿子上掉落所需的最短时间和最长时间。
输入
测试数据有多组,每组包括两行:
第一行:竿子的长度(以cm为单位,1 <= n <= 1e6),和在竿子上的蚂蚁的数量n(1 <= n <= 1e6)
第二行:每只蚂蚁距离竿子左端的距离,以空格分开,每个数均不超过l且大于0
输出
对于每组测试输出一行,包括两个整数:全部蚂蚁掉落所需的最短时间和最长时间,以空格分开
样例输入
10 3
2 6 7
214 7
11 12 7 13 176 23 191
样例输出
4 8
38 207
题解:碰撞后反向爬其实就是相当于擦肩而过,所以最短时间就是靠近中间的那个点到两端点的较小值,最长时间就是最靠近两端点的点到另一边端点的距离
#include <stdio.h>
in