#P6187. [NOI Online #1 提高组] 最小环

[NOI Online #1 提高组] 最小环

题目描述

给定一个长度为 nn 的正整数序列 aia_i,下标从 11 开始编号。我们将该序列视为一个首尾相邻的环,更具体地,对于下标为 ii, j(ij)j(i \leqslant j) 的两个数 aia_i, aja_j,它们的距离为 min(ji,i+nj)\min(j-i, i+n-j)

现在再给定 mm 个整数 k1k_1, k2k_2,..., kmk_m,对每个 ki(i=1k_i(i=1, 22,..., m)m),你需要将上面的序列 aia_i 重新排列,使得环上任意两个距离为 kik_i 的数字的乘积之和最大。

输入格式

第一行两个正整数 nn, mm,表示序列长度与询问数。

接下来一行 nn 个正整数表示 aia_i

接下来 mm 行每行一个非负整数表示 kik_i

输出格式

mm 行,每行一个整数表示答案。

6 4
1 2 3 4 5 6
0
1
2
3
91
82
85
88

提示

输入输出样例 1 解释

  • k=0k=0 时:答案为每个数平方的和。
  • k=1k=1 时:一种最优方案:{3,1,2,4,6,5}\{3,1,2,4,6,5\}。答案为 $3 \times 1 + 1 \times 2 + 2 \times 4 + 4 \times 6 + 6 \times 5 + 5 \times 3 = 82$。
  • k=2k=2 时:一种最优方案:{3,6,1,4,2,5}\{3,6,1,4,2,5\}。答案为 $3 \times 1 + 1 \times 2 + 2 \times 3 + 6 \times 4 + 4 \times 5 + 5 \times 6 = 85$。
  • k=3k=3 时,一个合法的排列是 1,5,3,2,6,41,5,3,2,6,4 ,答案为 8888。注意这里答案不是 4444

数据范围与提示

对于所有测试数据:1mn2×1051 \leqslant m \leqslant n \leqslant 2 \times 10^50kn/20 \leqslant k \leqslant \lfloor n/2\rfloor1ai1051 \leqslant a_i \leqslant 10^5

测试点编号 nn \leqslant 特殊性质
1 1010
2 1818
3 3636 nn 为偶数且 m=1m=1k=2k=2
4,5 10001000 m10m \leqslant 10k=1k=1
6 5050 m10m \leqslant 10k2k \leqslant 2
7,8 30003000
9,10 2×1052 \times 10^5