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

Solution 1 (runtime: 93 ms):
#include<bits/stdc++.h>
#define minus1 cout<<-1<<endl;
#include<stdio.h>
#define Yes  cout<<"YES"<<endl;
#define No cout<<"NO"<<endl;
#define pb push_back
#define nl cout<<endl;
#define un unsigned;
#define FOR(l,r) for(ll i = l; i < r;i++)
#define frr(l,r) for(ll i = l; i >=r;i--)
using namespace std;
using ll = long long;




/*****************************************CODE*****************************************/


bool sortbysec(const pair<ll,ll> &a,
              const pair<ll,ll> &b)
{
    return (a.second < b.second);
}

bool sortBySecDesc(const pair<ll,ll> &a,
              const pair<ll,ll> &b)
{
    return (a.second > b.second);
}

bool customComparator(const pair<int, int>& a, const pair<int, int>& b) {
    if (a.first == b.first) {
        return a.second > b.second; // Sort in descending order of second element if first elements are equal
    }
    return a.first < b.first; // Sort in ascending order of first element
}


bool secDescFstAsc(const std::pair<int, int>& a, const std::pair<int, int>& b) {
    if (a.second != b.second) {
        return a.second < b.second; // Sort in ascending order based on second element
    } else {
        return a.first > b.first; // If second elements are equal, sort in descending order based on first element
    }
}

long long lcm(long long x, long long y){
    return (min(x, y)/__gcd(x,y))*max(x,y);
}
string s;

bool check(int i, ll n){
    if(i < 0 or i + 3 >= n) return false;

    if(s[i] == '1' and s[i + 1] == '1' and s[i + 2] == '0' and s[i + 3] == '0') return 1;
    return 0;
}

void sol(){
    int n, l, r;
    cin>>n>>l>>r;

    l--;
    r--;

    vector<int>a(n);

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

    vector<int>b, c;

    for(int i = 0;i <= r;i++){
        b.pb(a[i]);
    }

    for(int i = l;i < n;i++){
        c.pb(a[i]);
    }

    sort(b.begin(), b.end());
    sort(c.begin(), c.end());
    int len = r - l + 1;

    ll ans = 0;
    ll ans1 = 0;
    for(int i = 0; i < len; i++){
        ans1+=b[i];
    }

    for(int i = 0; i < len; i++){
        ans+=c[i];
    }


    cout<<min(ans,ans1)<<endl;

}

int main() {
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    ll t;
    cin>>t;



    int i = 1;
    while(t--) {
//        cout<<i++<<' ';
        sol();
//        cout<<endl;
    }

}


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

using namespace std;



#define int long long int

#define F first

#define S second

#define pb push_back

#define si set<int>

#define vi vector<int>

#define pii pair<int, int>

#define vpi vector<pii>

#define vpp vector<pair<int, pii>>

#define mii map<int, int>

#define mpi map<pii, int>

#define spi set<pii>

#define endl "\n"

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

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

#define double long double

#define que_max priority_queue<int>

#define que_min priority_queue<int, vi, greater<int>>

#define bug(...) __f(#__VA_ARGS__, __VA_ARGS__)

#define print(a) for (auto x : a) cout << x << " "; cout << endl

#define print1(a) for (auto x : a) cout << x.F << " " << x.S << endl

#define print2(a, x, y) for (int i = x; i < y; i++) cout << a[i] << " "; cout << endl



inline int power(int a, int b) {

    int x = 1;

    while (b) {

        if (b & 1) x *= a;

        a *= a;

        b >>= 1;

    }

    return x;

}



template <typename Arg1>

void __f(const char *name, Arg1 &&arg1) { cout << name << " : " << arg1 << endl; }

template <typename Arg1, typename... Args>

void __f(const char *names, Arg1 &&arg1, Args &&...args) {

    const char *comma = strchr(names + 1, ',');

    cout.write(names, comma - names) << " : " << arg1 << " | ";

    __f(comma + 1, args...);

}



const int N = 200005;



void solve() {

    int n,l,r;

    cin>>n>>l>>r;

    vi v(n);

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

        cin>>v[i];

    }



    vi v1, v2, v3;

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

        v1.push_back(v[i]);

    }



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

        v2.push_back(v[i]);

    }



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

        v3.push_back(v[i]);

    }

    

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

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

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



    int sum1 = 0, sum2 = 0;

    vi v4 = v1;

     int i=0, j = v4.size()-1;



     while(j >= 0 && i < v2.size()){

        if(v2[i] < v4[j]){

            swap(v2[i], v4[j]);

            i++, j--;

        }else{

            break;

        }

     }



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

        sum1 += v4[i];

     }



     v4 = v1;

     i=0, j = v4.size()-1;



     while(j >= 0 && i < v3.size()){

        if(v3[i] < v4[j]){

            swap(v3[i], v4[j]);

            i++, j--;

        }else{

            break;

        }

     }



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

        sum2 += v4[i];

     }



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

}



int32_t main() {

    ios_base::sync_with_stdio(0);

    cin.tie(0);

    cout.tie(0);



// #ifndef ONLINE_JUDGE

//     freopen("input.txt", "r", stdin);

//     freopen("output.txt", "w", stdout);

// #endif



    int t = 1;

    cin >> t;

    while (t--) solve();



    return 0;

}