题目描述
给定一个长度为 n 的正整数序列 ai,下标从 1 开始编号。我们将该序列视为一个首尾相邻的环,更具体地,对于下标为 i, j(i⩽j) 的两个数 ai, aj,它们的距离为 min(j−i,i+n−j)。
现在再给定 m 个整数 k1, k2,..., km,对每个 ki(i=1, 2,..., m),你需要将上面的序列 ai 重新排列,使得环上任意两个距离为 ki 的数字的乘积之和最大。
输入格式
第一行两个正整数 n, m,表示序列长度与询问数。
接下来一行 n 个正整数表示 ai。
接下来 m 行每行一个非负整数表示 ki。
输出格式
共 m 行,每行一个整数表示答案。
6 4
1 2 3 4 5 6
0
1
2
3
91
82
85
88
输入输出样例 1 解释
- k=0 时:答案为每个数平方的和。
- k=1 时:一种最优方案:{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=2 时:一种最优方案:{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=3 时,一个合法的排列是 1,5,3,2,6,4 ,答案为 88。注意这里答案不是 44。
数据范围与提示
对于所有测试数据:1⩽m⩽n⩽2×105,0⩽k⩽⌊n/2⌋,1⩽ai⩽105。
测试点编号 |
n⩽ |
特殊性质 |
1 |
10 |
无 |
2 |
18 |
3 |
36 |
n 为偶数且 m=1,k=2 |
4,5 |
1000 |
m⩽10,k=1 |
6 |
50 |
m⩽10,k⩽2 |
7,8 |
3000 |
无 |
9,10 |
2×105 |