아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

함수와 쿼리

시간 제한2초메모리 제한512 MB

요약
배열 a와 점화식 f(i,j)=min(f(i-1,j),f(i-1,j-1))+a_j가 주어질 때, 최대 1e5개의 f(x,y) 질의에 답한다.
난이도

어려움10점 중 9점

유형
동적 계획법, 분할 정복, 수학, 조합론
정답자
아직 제출이 없습니다

문제

길이가 nn인 배열 a=(a1,a2,…,an)a = (a_1, a_2, \dots, a_n)이 있다. 함수 ff를 다음과 같이 정의한다.

f(1, j)=aj(1≤j≤n)f(1,\, j) = a_j \qquad (1 \le j \le n)

f(i, j)=min⁡(f(i−1, j), f(i−1, j−1))+aj(2≤i≤n, i≤j≤n)f(i,\, j) = \min(f(i-1,\, j),\ f(i-1,\, j-1)) + a_j \qquad (2 \le i \le n,\ i \le j \le n)

배열 aa와 쿼리 mm개가 주어진다. 각 쿼리는 두 정수 xix_i, yiy_i로 이루어지고 f(xi,yi)f(x_i, y_i)의 값을 묻는다. 모든 쿼리의 답을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 배열 aa의 크기 nn (1≤n≤1051 \le n \le 10^5)이 주어진다.

둘째 줄에 a1,a2,…,ana_1, a_2, \dots, a_n이 공백으로 구분되어 주어진다. (0≤aj≤1040 \le a_j \le 10^4)

셋째 줄에 쿼리의 개수 mm (1≤m≤1051 \le m \le 10^5)이 주어진다. 이어지는 mm개의 줄에 쿼리가 한 줄에 하나씩 xix_i, yiy_i 순서로 주어진다. (1≤xi≤yi≤n1 \le x_i \le y_i \le n)

출력

쿼리가 주어진 순서대로 f(xi,yi)f(x_i, y_i)의 값을 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    6
    2 2 3 4 3 4
    4
    4 5
    3 4
    3 4
    2 3
    
    예상 출력
    12
    9
    9
    5
    
  2. 예제 2

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