题目描述
给定一个长度为 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 行,每行一个整数表示答案。
提示
输入输出样例 1 解释
- k=0 时:答案为每个数平方的和。
- k=1 时:一种最优方案:{3,1,2,4,6,5}。答案为 3×1+1×2+2×4+4×6+6×5+5×3=82。
- k=2 时:一种最优方案:{3,6,1,4,2,5}。答案为 3×1+1×2+2×3+6×4+4×5+5×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 |