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

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

용수철

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

요약
가장 짧은 스프링 k개를 같은 정수 길이로 맞추는 데 드는 누적 변경 비용의 최솟값을 구합니다.
난이도

보통10점 중 7점

유형
누적 합, 이분 탐색, 수학
정답자
아직 제출이 없습니다

문제

새로 산 용수철 여러 개가 있다. 각 용수철은 특정한 길이로 만들어져 있으며, 늘이거나 줄이려면 힘이 든다.

아직 한 번도 건드리지 않은 용수철의 길이를 11 센티미터 늘이거나 줄이는 데에는 힘 11이 필요하다. 같은 용수철을 그 다음부터 11 센티미터씩 더 바꿀 때마다 필요한 힘은 11씩 커진다. 즉, 한 용수철의 길이를 모두 합쳐 dd 센티미터만큼 바꾸려면 1+2+⋯+d=d(d+1)21 + 2 + \dots + d = \frac{d(d+1)}{2} 만큼의 힘이 든다.

가장 짧은 용수철 kk개를 모두 같은 길이로 만들 때 필요한 힘의 최솟값이 궁금하다. 모든 용수철은 처음에 한 번도 늘이거나 줄인 적이 없으며, 맞추려는 공통 길이는 임의의 정수로 자유롭게 정할 수 있다.

입력

첫째 줄에 용수철의 개수 nn과 질문의 개수 mm이 주어진다 (1≤n,m≤1061 \le n, m \le 10^6).

둘째 줄에 용수철들의 길이 s1,s2,…,sns_1, s_2, \dots, s_n이 오름차순으로 주어진다 (1≤si≤si+1≤1091 \le s_i \le s_{i+1} \le 10^9).

셋째 줄에 mm개의 질문 k1,k2,…,kmk_1, k_2, \dots, k_m이 주어진다 (1≤kj≤n1 \le k_j \le n). 각 질문 kjk_j는 가장 짧은 용수철 kjk_j개에 대한 것이다.

출력

각 질문 jj에 대해, 가장 짧은 용수철 kjk_j개를 모두 같은 길이로 만드는 데 드는 힘의 최솟값을 109+710^9 + 7으로 나눈 나머지를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    4 4 
    1 3 4 10
    1 2 3 4
    
    예상 출력
    0
    2
    4
    28