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
非特殊说明,本博所有文章均为博主原创,未经许可不得转载。
如经许可后转载,请注明出处:https://prolightsfxjh.com/article/aim-tech-round-3-div-2-b-checkpoints/
共有 0 条评论