51nod1266【水】

最短,两半分开走
最长,一边走,比较一下两端就好了。

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;

const int N=5e4+10;
int a[N];
int n;
int m;

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    int tmin,tmax;
    tmin=0;
    sort(a+1,a+n+1);

    for(int i=1;i<=n;i++)
    {
        if(a[i]<(m/2+1))
            tmin=max(a[i],tmin);
        else
            tmin=max(m-a[i],tmin);
    }
    if(n==1)
        tmax=max(m-a[1],a[1]);
    else
        tmax=max(m-a[1],a[n]);
    printf("%d %d",tmin,tmax);
    return 0;
}

原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934810.html