만드는 중입니다

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

마트료시카 인형

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

요약
각 구간에서 가장 작은 값을 반복해서 제거하며, 제거할 때마다 그 값의 위치와 다음으로 작은 값의 위치 사이 거리를 모두 더합니다.
난이도

어려움10점 중 8점

유형
배열, 정렬, 유니온 파인드, 분할 정복
정답자
아직 제출이 없습니다

문제

Denisson은 마트료시카 인형을 즐겨 가지고 노는 평범한 애호가이다. 마트료시카 한 세트는 나무 인형으로 이루어져 있다. 이 인형은 가운데에서 위아래로 열리며, 안에서 같은 모양의 더 작은 인형이 나온다. 그 작은 인형 안에는 또 다른 인형이 들어 있고, 이런 식으로 계속된다. 최근 그는 이 장난감 세트를 사서 테이블 위에 어떤 순서로 올려 두었다. 세트에는 크기가 서로 다른 인형이 정확히 nn개 있으므로, 현재 순서는 길이가 nn인 순열 pp로 나타낼 수 있다. 여기서 pip_i는 ii번째 인형의 크기이다. 오늘 Denisson은 장난감으로 쉬고 싶어 하며 다음 게임을 한다. 먼저 순열에서 구간 [l,r][l, r]을 고른다. 그다음 구간에서 가장 작은 마트료시카를 다음 크기의 마트료시카 안에 넣는다. 이 과정에 걸리는 시간은 ∣i−j∣|i - j|이며, 여기서 pip_i와 pjp_j는 선택한 구간에서 가장 작은 두 인형의 크기이다. 구간에 인형이 하나만 남을 때까지 이 과정을 반복한다. 게임의 총 시간은 모든 과정 시간의 합이다. Denisson은 qq개의 구간 [li,ri][l_i, r_i]마다 그 구간에서 게임을 하는 데 걸리는 총 시간을 알고 싶어 한다. 그는 여러분이 이 값을 찾는 데 많은 시간을 쓰지 않기를 바란다.

입력

첫째 줄에 마트료시카의 개수 nn과 요청의 개수 qq가 주어진다. (1≤n≤1051 \leq n \leq 10^5, 1≤q≤5⋅1051 \leq q \leq 5 \cdot 10^5) 둘째 줄에는 순열 pp가 주어진다. (1≤pi≤n1 \leq p_i \leq n) 이어지는 qq개의 줄에는 ii번째 구간의 양 끝 lil_i와 rir_i가 주어진다. (1≤li≤ri≤n1 \leq l_i \leq r_i \leq n)

출력

ii번째 요청마다 구간 [li,ri][l_i, r_i]에서 게임을 하는 데 걸리는 총 시간을 출력한다.

예제1

  1. 예제 1

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