UVA10714

题意:蚂蚁爬竿,问所有蚂蚁都从杆上 掉下去的最短和最长时间

思路:根据题意,每只蚂蚁爬行速度一样,所以当蚂蚁碰头转向时,可以当作那两只蚂蚁还是按照原来的方向向前前进,用一个数组记录每只蚂蚁掉出杆的最短时间,另一个数组记录掉出杆的最长时间

#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;
}


你可能感兴趣的:(UVA10714)