Problem: 2063B - Subsequence Update
Language: java

Solution 1 (runtime: 327 ms):
import java.util.*;
import java.io.*;

public class CF_1000_B {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        StringBuilder sb = new StringBuilder();
        int test_cases = sc.nextInt();
        while (test_cases-- > 0) {
            int n = sc.nextInt();
            int l = sc.nextInt();
            int r = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < n; i++)
                arr[i] = sc.nextInt();
            int[] arr1 = Arrays.copyOfRange(arr, 0, r);
            int[] arr2 = Arrays.copyOfRange(arr, l - 1, arr.length);
            Arrays.sort(arr1);
            Arrays.sort(arr2);
            long min1 = 0;
            long min2 = 0;
            for (int i = 0; i < r - l + 1; i++) {
                min1 += arr1[i];
                min2 += arr2[i];
            }
            sb.append(Math.min(min1, min2)).append("\n");
        }
        sc.close();
        System.out.println(sb.toString());
    }
}

Solution 2 (runtime: 343 ms):
import java.util.*;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();  // number of test cases
        while (t-- > 0) {
            // Read n, l, r
            int n = sc.nextInt();
            int l = sc.nextInt();  // 1-based index
            int r = sc.nextInt();  // 1-based index

            // Read array arr
            long[] arr = new long[n + 1];  // Using long[] for larger values, and n+1 to handle 1-based indexing
            for (int i = 1; i <= n; i++) {
                arr[i] = sc.nextLong();
            }

            // Step 1: Calculate the sum for the range [l, r]
            long initialSum = 0;
            for (int i = l; i <= r; i++) {
                initialSum += arr[i];
            }
            long min = initialSum;  // Store the initial sum as the minimum

            // Step 2: Find the smallest `r - l + 1` elements from [1, r]
            List<Long> prefix = new ArrayList<>();
            for (int i = 1; i <= r; i++) {
                prefix.add(arr[i]);
            }
            Collections.sort(prefix);
            long prefixSum = 0;
            // Sum the smallest `r - l + 1` elements from the sorted prefix
            for (int i = 0; i < r - l + 1; i++) {
                prefixSum += prefix.get(i);
            }
            min = Math.min(min, prefixSum);  // Update the minimum sum

            // Step 3: Find the smallest `r - l + 1` elements from [l, n]
            List<Long> suffix = new ArrayList<>();
            for (int i = l; i <= n; i++) {
                suffix.add(arr[i]);
            }
            Collections.sort(suffix);
            long suffixSum = 0;
            // Sum the smallest `r - l + 1` elements from the sorted suffix
            for (int i = 0; i < r - l + 1; i++) {
                suffixSum += suffix.get(i);
            }
            min = Math.min(min, suffixSum);  // Update the minimum sum

            // Output the result for the current test case
            System.out.println(min);
        }
    }
}