题意:蚂蚁爬竿,问所有蚂蚁都从杆上 掉下去的最短和最长时间
思路:根据题意,每只蚂蚁爬行速度一样,所以当蚂蚁碰头转向时,可以当作那两只蚂蚁还是按照原来的方向向前前进,用一个数组记录每只蚂蚁掉出杆的最短时间,另一个数组记录掉出杆的最长时间
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #define N 1000005 using namespace std; int arr[N], a[N], b[N]; int main() { int n; scanf("%d", &n); while (n--) { int l, m; scanf("%d %d", &l, &m); for (int i = 0; i < m; i++) scanf("%d", &arr[i]); for (int i = 0; i < m; i++) { int temp; a[i] = abs(arr[i] - l); b[i] = arr[i]; if (a[i] > b[i]) { temp = a[i]; a[i] = b[i]; b[i] = temp; } } sort(a, a + m); sort(b, b + m); printf("%d %d\n", a[m - 1], b[m - 1]); } return 0; }