AIM Tech Round 3 (Div. 2) B. Checkpoints 排序、讨论

ProLightsfx 2016-8-26 101 8/26
B. Checkpoints 排序、讨论

My Solution

排序、讨论

if(a < val[0]) ans = val[n - 2] - a;

else if(a > val[n - 1]) ans = a - val[1];

else 1 : min(ans舍去val[0], ans舍去val[n-1]) 处理的时候注意 a > val[0] && a < val[1] 和 a < val[n-1] && a > val[n-2 ]的情况

此外就是 n == 1的时候了

 

#include 
#include 
#include 
using namespace std;
typedef long long LL;
const int maxn = 1e5 + 8;

LL val[maxn];

int main()
{
    #ifdef LOCAL
    freopen("b.txt", "r", stdin);
    //freopen("o.txt", "w", stdout);
    int T = 4;
    while(T--){
    #endif // LOCAL
    ios::sync_with_stdio(false);
    cin.tie(0);

    LL n, a, ans = 0, l, r;
    cin>>n>>a;
    for(int i = 0; i < n; i++){ cin>>val[i];
    }

    sort(val, val + n);

    if(a < val[0]){ ans = val[n - 2] - a; } else if(a > val[n - 1]){
        ans = a - val[1];
    }
    else{
        l = a - val[0];
        if(val[n - 2] > a) r = val[n - 2] - a;
        else r = 0;
        ans = min(2*l + r, l + 2*r);


        if(a > val[1]) l = a - val[1];
        else l = 0;
        r = val[n - 1] - a;
        ans = min(ans, min(2*l + r, l + 2*r));
    }
    if(n == 1) ans = 0;
    cout<<ans<<endl;


    #ifdef LOCAL
    cout<<endl;
    }
    #endif // LOCAL
    return 0;
}

 

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

https://www.prolightsfxjh.com/

Thank you!

                                                                                                                                             ------from ProLightsfx

- THE END -

ProLightsfx

11月17日01:47

最后修改:2024年11月17日
0

非特殊说明,本博所有文章均为博主原创,未经许可不得转载。

共有 0 条评论