만드는 중입니다

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

곱하기

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

요약
길이 N의 수열 a와 Q개의 제한 K가 주어질 때, 각 값이 b에 K번을 넘어 나타나지 않도록 b를 정해 a_i와 b_i 곱의 합을 최소로 구합니다.
난이도

보통10점 중 5점

유형
그리디, 정렬, 누적 합
정답자
아직 제출이 없습니다

문제

사슈카는 모든 종류의 수열을 좋아한다. 그녀는 특히 양의 정수 NN개로 이루어진 자신의 수열 a1a_1, a2a_2, …\dots, aNa_N을 아주 좋아한다. 방금 곱셈을 배운 여러분을 시험하려고, 사슈카는 이 수열로 문제를 낸다. 그녀는 양의 정수 NN개로 이루어진 수열 b1b_1, b2b_2, …\dots, bNb_N을 찾아 ∑i=1Nai×bi=a1×b1+a2×b2+⋯+aN×bN\sum_{i=1}^{N}{a_i \times b_i} = a_1 \times b_1 + a_2 \times b_2 + \cdots + a_N \times b_N이 최소가 되기를 바란다. 함정이 하나 있다. 수열 bb에서 같은 값 xx가 나타나는 자리는 KK곳을 넘을 수 없다. 즉, bi=xb_i = x이고 1≤i≤N1 \le i \le N인 서로 다른 ii의 개수가 KK를 넘으면 안 된다. 질문 하나만 답하기엔 너무 싱거우니, 사슈카는 QQ개의 질문을 한다. ii번째 질문은 K=kiK = k_i일 때 합의 최솟값을 묻는다. 사슈카의 질문에 답하는 프로그램 prod를 작성하라.

입력

첫 줄에 수열의 길이 NN과 질문의 개수 QQ가 주어진다. 둘째 줄에는 정수 NN개 a1a_1, a2a_2, …\dots, aNa_N이 주어진다. 마지막 줄에는 정수 QQ개 k1k_1, k2k_2, …\dots, kQk_Q가 주어진다.

출력

한 줄에 정수 QQ개를 출력한다. ii번째 수는 ii번째 질문의 답이다.

제한

  • 1≤N≤5000001 \le N \le 500000
  • 1≤Q≤7500001 \le Q \le 750000
  • 1≤ai≤1061 \le a_i \le 10^6
  • 1≤ki≤1091 \le k_i \le 10^9

힌트

첫 번째 질문의 답은 b={1,1,1,2,1,1,1,1}b = \{1,1,1,2,1,1,1,1\}로 얻을 수 있다. 이때 1×40+1×100+1×77+2×15+1×44+1×22+1×47+1×38=3981 \times 40 + 1 \times 100 + 1 \times 77 + 2 \times 15 + 1 \times 44 + 1 \times 22 + 1 \times 47 + 1 \times 38 = 398이다.

예제1

  1. 예제 1

    입력
    8 9
    40 100 77 15 44 22 47 38
    7 5 3 8 4 2 1 6 9
    
    예상 출력
    398 458 579 383 498 741 1273 420 383