在一行上输入两个整数
。
在第二行输入
个整数
。
输出一个整数,表示通过最优配对操作后小红能够获得的最大得分。
6 2 1 1 4 5 1 4
21
一种可行的最优方案如下:
选择
与
,得分
;
选择
与
,得分
;
最终总得分为
。
/*
先排序,从最大的一边开始遍历
*/
package main
import (
"fmt"
"sort"
)
func main() {
var n,k, result int
fmt.Scanf("%d %d", &n, &k)
var a = make([]int, n)
for i:=0;i<n;i++{
fmt.Scanf("%d", &a[i])
}
sort.Ints(a)
for i:=len(a)-1;i>=1;{
if a[i] - a[i-1] <= k {
result+= a[i]*a[i-1]
i -=2
}else{
i--
}
}
fmt.Println(result)
}