나비와 전봇대 (Easy)

시간 제한1초메모리 제한1024 MB

요약
각 시작 전봇대 p에 대해 p를 최저점으로 높이가 단조증가하는 전봇대를 골라 전선이 교차하지 않게 연결할 때, 길이 합을 최대화한 뒤 비용 합의 최솟값을 구한다.
난이도

보통10점 중 7점

유형
동적 계획법, 스택, 기하, 분할 정복
정답자
아직 제출이 없습니다

문제

나비는 새로 건설할 도시의 전봇대를 관리하는 일을 맡았다. 아직 전선이 연결되지 않았기 때문에, 나비는 이 전봇대들의 전선을 연결해야 한다. 전봇대는 11의 간격으로 직선을 따라 총 NN개가 건설되어 있으며 왼쪽에서부터 번호가 11부터 NN까지 붙어 있다. 첫 번째 전봇대의 위치는 11이고 초기에 ii번 전봇대의 높이는 H_iH\_i이다. 좌표평면에서 나타낸다면 ii번 전봇대는 (i,0)(i,0)부터 (i,H_i)(i,H\_i)를 연결하는 선분으로 생각할 수 있다.

전선은 두 전봇대의 가장 윗부분을 최단 거리로 연결한다. 즉 ii번째 전봇대와 jj번째 전봇대가 연결된다면 (i,H_i)(i,H\_i)와 (j,H_j)(j,H\_j)를 선분으로 연결한다. 그리고 이때 연결 비용은 전선의 길이의 제곱이다.

나비는 준혁이에게 시작 전봇대의 번호 pp를 받고 pp번 전봇대를 포함하여 몇 개의 전봇대를 선택하여 전선을 연결한다. 선택한 전봇대를 번호의 오름차순으로 정렬하였을 때 S_1,S_2,…,S_kS\_1, S\_2, \ldots, S\_k라 한다면 S_iS\_i번째 전봇대와 S_i+1S\_{i+1}번째 전봇대를 전선으로 연결하게 된다. (1≤i\<k)(1\le i\<k)

또한 나비는 다음과 같은 조건을 만족하도록 전봇대를 선택하여 연결하여야 한다.

  • 나비가 연결한 전선과 전봇대가 교차해선 안 된다. 단, 전선이 어떤 전봇대 ii와 (i,H_i)(i,H\_i)에서 만나는 것은 가능하다.
  • pp를 기준으로 왼쪽으로 갈수록 선택한 전봇대의 높이가 단조증가하고, pp를 기준으로 오른쪽으로 갈수록 선택한 전봇대의 높이가 단조증가하여야 한다. 즉 S_t=pS\_t = p일 때 H_S_1≥H_S_2≥⋯≥H_S_t−1≥H_p≤H_S_t+1≤H_S_t+2≤⋯≤H_S_kH\_{S\_1} \ge H\_{S\_2} \ge \cdots \ge H\_{S\_{t-1}} \ge H\_p \le H\_{S\_{t+1}} \le H\_{S\_{t+2}} \le \cdots \le H\_{S\_k}를 만족해야 한다.
  • 나비는 연결한 전선의 길이 합이 최대가 되도록 전선을 연결하려고 한다. 만약 그런 경우가 여러 가지 있다면, 연결 비용의 합이 최소인 방법으로 연결한다.

준혁이는 나비에게 QQ개의 작업을 준다. 작업마다 시작 전봇대가 pp일 때 조건을 만족하게 연결 비용의 합의 최솟값을 구해보자.

입력

첫째 줄에 NN이 주어진다. (1≤N≤100,000)(1 \le N \le 100\\,000)

둘째 줄에 정수 H_1,H_2,...,H_NH\_1, H\_2, ... ,H\_N이 공백으로 구분되어 주어진다. (1≤H_i≤106)(1 \le H\_i \le 10^6)

셋째 줄에 작업의 수 QQ가 주어진다. (1≤Q≤100,000)(1 \le Q \le 100\\,000)

넷째 줄 부터 QQ개의 줄에 걸쳐 시작 전봇대의 번호 pp가 주어진다. (1≤p≤N)(1\le p \le N)

출력

줄마다 시작 전봇대의 번호가 pp일 때 연결 비용의 합을 한 줄에 하나씩 출력한다.

예제2

  1. 예제 1

    입력
    5
    5 9 3 5 6
    3
    1
    3
    5
    
    예상 출력
    17
    44
    18
    
  2. 예제 2

    입력
    5
    1 2 3 2 1
    1
    3
    
    예상 출력
    0