만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

부분수열 갱신

시간 제한1.5초메모리 제한2048 MB

요약
배열과 구간 [l,r]이 주어질 때, 부분수열 하나를 정확히 한 번 뒤집어 구간 합의 최솟값을 구합니다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 배열
정답자
아직 제출이 없습니다

문제

Little John이 숙모에게서 확장 나사를 수백 번 빌렸는데, 결국 숙모가 쓰지 않는 나사를 돌려받으러 오기로 했다.

나사는 집 설계에서 중요한 부품이라서, Little John은 아무도 닿을 수 없는 곳, 즉 친환경 목재 化粧판 아래에 나사를 숨기기로 했다.

정수 수열 a1,a2,…,ana_1, a_2, \ldots, a_n과 구간 [l,r][l,r] (1≤l≤r≤n1 \le l \le r \le n)이 주어진다.

이 수열에 대해 다음 연산을 정확히 한 번 수행해야 한다.

  • 수열 aa의 임의의 부분수열을 골라 뒤집는다. 부분수열은 연속일 필요가 없다.

형식적으로는 1≤i1<i2<…<ik≤n1 \le i_1 < i_2 < \ldots < i_k \le n을 만족하는 임의의 인덱스 i1,i2,…,iki_1, i_2, \ldots, i_k를 고른다. 그다음 모든 1≤x≤k1 \le x \le k에 대해 ixi_x번째 원소를 ik−x+1i_{k-x+1}번째 원소의 원래 값으로 동시에 바꾼다.

연산 후 al+al+1+…+ar−1+ara_l+a_{l+1}+\ldots+a_{r-1}+a_r의 최솟값을 구하라.

입력

각 테스트는 여러 개의 테스트 케이스로 이루어진다. 첫 줄에 테스트 케이스의 수 tt (1≤t≤1041 \le t \le 10^4)가 주어진다.

각 테스트 케이스의 첫 줄에는 세 정수 nn, ll, rr (1≤l≤r≤n≤1051 \le l \le r \le n \le 10^5)이 주어진다. nn은 aa의 길이이고 [l,r][l,r]은 구간이다.

둘째 줄에는 정수 a1,a2,…,ana_1, a_2, \ldots, a_n (1≤ai≤1091 \le a_i \le 10^9)이 주어진다.

모든 테스트 케이스의 nn 합은 10510^5를 넘지 않는다.

출력

각 테스트 케이스마다 al+al+1+…+ar−1+ara_l+a_{l+1}+\ldots+a_{r-1}+a_r의 최솟값을 한 줄에 출력한다.

힌트

두 번째 테스트 케이스에서 a=[1,2,3]a=[1,2,3]이고 구간은 [2,3][2,3]이다. 부분수열 a1,a3a_1, a_3을 골라 뒤집으면 수열은 [3,2,1][3,2,1]이 된다. 그러면 a2+a3a_2+a_3은 33이 된다. 합의 최솟값이 33임을 보일 수 있다.

예제1

  1. 예제 1

    입력
    6
    2 1 1
    2 1
    3 2 3
    1 2 3
    3 1 3
    3 1 2
    4 2 3
    1 2 2 2
    5 2 5
    3 3 2 3 5
    6 1 3
    3 6 6 4 3 2
    
    예상 출력
    1
    3
    6
    3
    11
    8