代码:
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
#define int long long
int n, w;
int t[100005];
int minn()
{
if(w < t[1])
{
return t[n] - w;
}
if(w > t[n])
{
return w - t[1];
}
else
{
return t[n] - t[1];
}
}
int max1()
{
// cout << "max1---->\n";
int now = w;
int sum = 0;
// cout << now << endl;
for(int i = 1; i <= ((n%2==0)?n/2:n/2+1); i++)
{
int l = i;
int r = n + 1 - i;
sum += max(abs(t[l] - w), abs(t[l] - now));
now = t[l];
// cout << now << endl;
if(r != l)
{
sum += max(abs(t[r] - w), abs(t[r] - now));
now = t[r];
// cout << now << endl;
}
}
// cout << "sum-->" << sum << endl;
return sum;
}
int maxn()
{
// cout << "maxn---->\n";
int now = w;
int sum = 0;
// cout << now << endl;
for(int i = 1; i <= ((n%2==0)?n/2:n/2+1); i++)
{
int l = i;
int r = n + 1 - i;
sum += max(abs(t[r] - w), abs(t[l] - now));
now = t[r];
// cout << now << endl;
if(l != r)
{
sum += max(abs(t[l] - w), abs(t[l] - now));
now = t[l];
// cout << now << endl;
}
}
// cout << "sum-->" << sum << endl;
return sum;
}
signed main()
{
cin >> n >> w;
for(int i = 1; i <= n; i++)
{
cin >> t[i];
}
sort(t + 1, t + 1 + n);
cout << minn() << ' ' << max(max1(), maxn()) << endl;
return 0;
}
拜谢大佬!