Problem: 2063B - Subsequence Update
Language: c++17 

Code 1:
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>

using namespace std;

// פונקציה שמקטינה את סכום הקטע [l, r] על ידי החלפה עם חלק חיצוני
long long minimizeSegment(vector<int> segment, vector<int> external) {
    if (external.empty()) {
        return accumulate(segment.begin(), segment.end(), 0LL);
    }

    sort(segment.rbegin(), segment.rend());  // מיון יורד (הגדולים ראשונים)
    sort(external.begin(), external.end());  // מיון עולה (הקטנים ראשונים)

    int minSize = min(segment.size(), external.size());
    for (int i = 0; i < minSize; ++i) {
        if (segment[i] > external[i]) {
            swap(segment[i], external[i]);
        } else {
            break;
        }
    }

    return accumulate(segment.begin(), segment.end(), 0LL);
}

void solve() {
    int t;
    cin >> t;

    while (t--) {
        int n, l, r;
        cin >> n >> l >> r;
        vector<int> arr(n);

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

        vector<int> segment(arr.begin() + l - 1, arr.begin() + r);
        vector<int> prefix(arr.begin(), arr.begin() + (l - 1));
        vector<int> suffix(arr.begin() + r, arr.end());

        long long originalSum = accumulate(segment.begin(), segment.end(), 0LL);
        long long sumWithPrefix = prefix.empty() ? originalSum : minimizeSegment(segment, prefix);
        long long sumWithSuffix = suffix.empty() ? originalSum : minimizeSegment(segment, suffix);

        cout << min({originalSum, sumWithPrefix, sumWithSuffix}) << '\n';
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    solve();

    return 0;
}


Code 2:
#include <iostream>

#include <vector>

#include <algorithm>

#include <numeric>



using namespace std;



// פונקציה שמקטינה את סכום הקטע [l, r] על ידי החלפה עם חלק חיצוני

long long minimizeSegment(vector<int>& segment, vector<int>& external) {

    sort(segment.rbegin(), segment.rend());  // מיון יורד (הגדולים ראשונים)

    sort(external.begin(), external.end());  // מיון עולה (הקטנים ראשונים)



    int minSize = min(segment.size(), external.size());

    for (int i = 0; i < minSize; ++i) {

        if (segment[i] > external[i]) {

            swap(segment[i], external[i]);

        } else {

            break;

        }

    }



    return accumulate(segment.begin(), segment.end(), 0LL);

}



void solve() {

    int t;

    cin >> t;



    while (t--) {

        int n, l, r;

        cin >> n >> l >> r;

        vector<int> arr(n);



        for (int i = 0; i < n; ++i) {

            cin >> arr[i];

        }



        vector<int> segment(arr.begin() + l - 1, arr.begin() + r);

        vector<int> prefix(arr.begin(), arr.begin() + (l - 1));

        vector<int> suffix(arr.begin() + r, arr.end());



        long long sumWithPrefix = prefix.empty() ? LLONG_MAX : minimizeSegment(segment, prefix);

        long long sumWithSuffix = suffix.empty() ? LLONG_MAX : minimizeSegment(segment, suffix);



        cout << min(sumWithPrefix, sumWithSuffix) << '\n';

    }

}



int main() {

    ios::sync_with_stdio(false);

    cin.tie(nullptr);



    solve();



    return 0;

}



Answer: 1