原题链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1266
思路:我们可以知道,假设一只向右一只向左,相遇后,向右的向左,向左的向右,也就是说,其实可以等同看待,所以当求最短时间时,每只蚂蚁向离端点近的地方走,求最长时间时,每只蚂蚁向离端点远的地方走就是
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 50005;
int a, n, l;
int main() {
scanf("%d %d", &n, &l);
int MIN = 0, MAX = 0;
for (int i = 0; i < n; i++) {
scanf("%d", &a);
if (a < l / 2) {
MIN = max(MIN, a);
MAX = max(MAX, l - a);
}
else {
MIN = max(MIN, l - a);
MAX = max(MAX, a);
}
}
printf("%d %d\n", MIN, MAX);
return 0;
}