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

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

using namespace std;

 

#define MOD 1000000007

#define maxn 100000000000017    

#define endl "\n"

#define mk make_pair

#define pll pair<ll, ll>

#define vll vector<ll>

#define vld vector<ld>

#define vpll vector<ppl>

#define ff first

#define ss second

 

typedef long long ll;

typedef long double ld;

 

 

#define o(...) if(local=='L') {__f(#__VA_ARGS__, __VA_ARGS__); cout<<endl;}

 

#define Ns 1000007

 

char local = 'O';

 

////////////////#####################INPUT###############///////////////////////

 

template <typename T>

void read(T &p)

{

    cin >> p;

}

 

template <typename T, typename T1>

void read(pair<T, T1> &p)

{

    read(p.ff);

    read(p.ss);

}

 

template <typename T>

void read(T arr[], ll n)

{

    for (ll i = 0; i < n; i++)

    {

        read(arr[i]);

    }

}

 

template <typename T>

void read(vector<T> &arr)

{

    for (ll i = 0; i < arr.size(); i++)

    {

        read(arr[i]);

    }

}

 

 

////////////////#####################OUPUT###############///////////////////////

 

template <typename T>

void out(T& n)

{

    cout << n;

}

 

template <typename T, typename T1>

void out(pair<T, T1> &p)

{

    cout << "(";

    out(p.ff);

    cout << ",";

    out(p.ss);

    cout << ")";

}

 

template <typename T>

void out(T arr[], ll n)

{

    for (ll i = 0; i < n; i++)

    {

        out(arr[i]);

        cout << " ";

    }

}

 

template <typename T>

void out(vector<T> &arr)

{

 

    cout << "[ ";

    for (ll i = 0; i < arr.size(); i++)

    {

        out(arr[i]);

        if (i!=arr.size()-1)

            cout << ", ";

    }

    cout << " ]" << endl;

 

}

 

 

 

template <typename T>

void out(set<T> &arr)

{

    for (auto i:arr)

    {

        out(i);

        cout << " ";

    }

}



template <typename T>

void out(multiset<T> &arr)

{

    for (auto i:arr)

    {

        out(i);

        cout << " ";

    }

}

 

template <typename T, typename T1>

void out(map<T,T1> &m)

{

    for (auto i:m)

    {

        out(i.first);

        cout<<" -> ";

        out(i.second);

        cout<<", ";

    }

}

 

template <typename Arg1>

void __f(const char* name, Arg1&& arg1) {

    cout << name << " : ";

    out(arg1);

}

 

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) << " : ";

    out(arg1);

    cout << " | ";

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

}

 

 

////////////////////////////////////END TEMPLATE//////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////



// vector<bool> p(1e7 + 1, true);



// (a / b) % mod

long long power_mod(long long a, long long b, long long mod)

{

    long long ans = 1;

    while (b) {

        if (b & 1) ans = (ans * a) % mod;

        a = (a * a) % mod;

        b >>= 1;

    }

    return ans;

}



long long gcd(long long a, long long b)

{

    if(b == 0)

        return a;

    else

        return gcd(b, a % b);

}



long long n_sum(long long a, long long n, long long d) {

    return n * a + n * (n - 1) * d / 2;

}



struct edge {

    int to, a, b;



    edge(int _to, int _a, int _b): to(_to), a(_a), b(_b) {}

};



unsigned int highbit(unsigned int x){

	x |= x >> 1;

	x |= x >> 2;

	x |= x >> 4;

	x |= x >> 8;

	x |= x >> 16;

	return x - (x >> 1);

}



void calc() {



}



void init() {

}



long long min_val(vector<int> &a, int l1, int r1, int l2, int r2) {

    priority_queue<int, vector<int>, greater<int>> q1;

    priority_queue<int, vector<int>, less<int>> q2;

    for (int i = l1; i <= r1; i++) {

        q1.push(a[i]);

    }



    long long ans = 0ll;

    for (int i = l2; i <= r2; i++) {

        q2.push(a[i]);

        ans += a[i];

    }



    if (l1 > r1) {

        return ans;

    }



    while (!q1.empty() && !q2.empty() && q1.top() < q2.top()) {

        int t1 = q1.top(), t2 = q2.top();

        q1.pop();

        q2.pop();

        ans -= t2;

        ans += t1;

    }

    return ans;

}



void solve() {

    int n, l, r;

    cin >> n >> l >> r;



    vector<int> a(n);

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

        cin >> a[i];

    }

    cout << min(min_val(a, 0, l - 2, l - 1, r - 1), min_val(a, r, n - 1, l - 1, r - 1)) << endl;

}



int main()

{

 

    // #ifdef L

    //     local = 'L';

    //     time_t start, end;

    //     time(&start);

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

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

    // #endif

 

    ios_base::sync_with_stdio(false);

    cin.tie(NULL);

 

 

    ll t1;

    

    t1 = 1;

 

    cin>>t1;

 

    calc();



    while (t1--) {

        solve();

    }

 

    

 

    #ifdef L

    time(&end);

    double time_taken = double(end - start);

    cout << endl

        << endl

        << endl

        << "Time taken by program is : " << fixed

        << time_taken << setprecision(6);

    cout << " sec " << endl;

    #endif

}

Solution 2 (runtime: 218 ms):
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"


signed main() {
    int T;
    cin >> T; 
    while (T--) {
        int n,l,r;
        cin>>n>>l>>r;
        vector<int> v,v1;
        int a[n];
        for(int i=0;i<n;i++) cin>>a[i];
        int ans1 =0;
        int ans2 =0;
        for(int i=0;i<r;i++){
            v.push_back(a[i]);
        }
        for(int i=l-1;i<n;i++){
            v1.push_back(a[i]);
        }
        sort(v.begin(),v.end());
        sort(v1.begin(),v1.end());
        for(int i=0;i<(r-l+1);i++){
            ans1+= v[i];
            ans2+= v1[i];
        }
         
        cout<<min(ans1,ans2)<<endl;


    }

    return 0;
}