Round 1 Confusion codechef solution in c++

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {
    int t;
    cin >> t;

    while (t--) {
        int n, k;
        cin >> n >> k;

        vector<int> a(n);
        for (int i = 0; i < n; i++) {
            cin >> a[i];
        }

        sort(a.begin(), a.end());

        int min_diff = a[n - 1] - a[0];
        int min_height = a[0] + k;
        int max_height = a[n - 1] - k;

        if (min_height > max_height) {
            swap(min_height, max_height);
        }

        for (int i = 1; i < n - 1; i++) {
            int subtract = a[i] - k;
            int add = a[i] + k;

            if (subtract >= min_height || add <= max_height) {
                continue;
            }

            if (max_height - subtract <= add - min_height) {
                min_height = subtract;
            } else {
                max_height = add;
            }
        }

        cout << min(min_diff, max_height - min_height) << endl;
    }

    return 0;
}