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

Solution 1 (runtime: 187 ms):
#include <bits/stdc++.h>

#include<vector>

using namespace std;

int main() {

    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> brr;

        for(int i=l-1;i<n;i++){

            brr.push_back(arr[i]);

        }

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

        vector<int> crr;

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

            crr.push_back(arr[i]);

        }

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

        long long sum=0;

        for(int i=0;i<r-l+1;i++){

            sum+=brr[i];

        }

        long long sum2=0;

        for(int i=0;i<r-l+1;i++){

            sum2+=crr[i];

        }

        cout<<min(sum,sum2)<<endl;

    }

}

Solution 2 (runtime: 77 ms):
#include <bits/stdc++.h>



using namespace std;



#define pb push_back

#define F first

#define S second



#define MOD 1000000007



#define all(x) (x).begin(), (x).end()

#define rall(x) (x).rbegin(), (x).rend()

#define FOR(i, a, b) for(int i = a; i < (b); i++)

#define YES(con) if (con) { cout << "YES\n"; return; }

#define NO(con) if (con) { cout << "NO\n"; return; }

#define sz(x) int(x.size())



typedef long long ll;

typedef unsigned long long ull;

typedef long double ld;

typedef vector<int> vi;

typedef vector<long long> vll;

typedef vector<unsigned long long> vull;



const char nl = '\n';

const ld PI = acos(-1.0);

const int INF32 = int(1e9) + int(1e8) + int(1e7) + int(1e6) + int(1e5);

const int64_t INF64 = int64_t(1e18) + int64_t(1e17) + int64_t(1e16);

mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());



template<typename... T>void read(T&... args) {((cin >> args), ...);}

template<typename... T>void print(T&&... args) {((cout << args ), ...);}



struct custom_hash {

    static uint64_t splitmix64(uint64_t x) {

        x += 0x9e3779b97f4a7c15;

        x = (x ^ (x >> 30)) * 0xbf58476d1ce4e5b9;

        x = (x ^ (x >> 27)) * 0x94d049bb133111eb;

        return x ^ (x >> 31);

    }

    size_t operator()(uint64_t x) const {

        static const uint64_t FIXED_RANDOM =

                chrono::steady_clock::now().time_since_epoch().count();

        return splitmix64(x + FIXED_RANDOM);

    }

};



ll inv(ll i, ll m) {

    return (i <= 1 ? 1 : m - (m / i) * inv(m % i, m) % m);

}



template <typename T>

void readv(vector<T>& v) {

    for (auto& el : v) cin >> el;

}



template<typename T>

void outv(vector<T>& v) {

    for (int i = 0; i < (T)v.size(); i++) {

        if (i != (T)v.size() - 1) cout << v[i] << ' ';

        else cout << v[i];

    }

}



template <typename T>

void printColl(T& coll) {

    cout << '\n';

    for (const auto& el : coll) cout << el << ' ';

    cout << '\n';

}



void solve() {

    ll n, l, r;

    cin >> n >> l >> r;

    --l, --r;

    vll v(n), vv, zz, zz2;

    FOR (i, 0, n) {

        cin >> v[i];

        if (i < l) {

            zz.pb(v[i]);

        } else if (i > r) {

            zz2.pb(v[i]);

        }

    }

    

    ll val = l;

    FOR (i, l, r + 1) {

        vv.pb(v[i]);

    }

    

    sort(all(zz));

    sort(all(zz2));

    sort(rall(vv));

    

    ll ans = 0, j = 0;

    for (int i = 0; i < vv.size(); i++) {

        if (val && zz[j] < vv[i]) {

            ans += zz[j++];

            val--;

        } else {

            ans += vv[i];

        }

    }

    

    ll ans2 = 0;

    j = 0;

    val = n - r - 1;

    for (int i = 0; i < vv.size(); i++) {

        if (val && zz2[j] < vv[i]) {

            ans2 += zz2[j++];

            val--;

        } else {

            ans2 += vv[i];

        }

    }

    

    print(min(ans, ans2), nl);

}



signed main() {

    ios::sync_with_stdio(false);

    cin.tie(nullptr);



    cout << fixed << setprecision(12);



    int t;

    cin >> t;



    while (t--) solve();



    return 0;

}