给定 n 个整数,每次可以从剩下的整数中取走两个整数并计算这两个整数的积。 若该操作进行 m 次,求每次计算的积之和的最小值。 Input / 输入格式 有多组测试数据。第一行输入一个整数 T(约 30)代表测试数据组数,对于每组数据: 第一行输入两个整数 n 和 m(1≤n≤105, 0≤m≤2n),它们的含义如题中所述。 第二行输入 n 个整数 a1,a2,⋯,an(0≤ai≤104)表示给定的整数。 Output / 输出格式 每组数据输出一行一个整数,表示积之和的最小值。 Sample Input / 样例输入 3 4 2 1 3 2 4 3 1 2 3 1 4 0 1 3 2 4 Sample Output / 样例输出 10 2 0 Hint / 样例说明 对于第一组样例数据,答案是 1×4+3×2=10。 对于第二组样例数据,答案是 2×1=2。 package main import ( "bufio" "fmt" "os" "sort" "strconv" "strings" ) var data []int var n int func dodo(datastr string, m int) { if m == 0 { fmt.Printf("%d\n", 0) return } data = data[0:0] for _, s := range strings.Split(datastr, " ") { n, _ := strconv.Atoi(s) data = append(data, n) } sort.Ints(data) n = len(data)