贪心 76 pts 代码求调
查看原帖
贪心 76 pts 代码求调
682394
Moon_Traveller楼主2023/7/23 23:42

记录

代码:

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

拜谢大佬!

2023/7/23 23:42
加载中...