package main
import (
"bufio"
"fmt"
"math"
"os"
"sort"
"strconv"
"strings"
)
/*
描述:给出数字k,请输出所有结果小于k的整数组合到一起的最小交换次数。 组合一起是指满足条件的数字相邻,不要求相邻后在数组中的位置。
数据范围 -100 <= k <= 100 -100 <= 数组中的值 <= 100
示例:
第一行输入数据:第二行输入k数值:
1 3 1 4 0
2
输出 1
样例输入2:
第一行输入数据:第二行输入k数值
0 0 1 0
2
输出 0
样例输入3: 第一行输入数据:第二行输入k数值:
2 3 2
1
输出 0
*/
// 数组中小于k的元素的下标组成新数组,遍历该新数组,计算距离组成距离数组,取最小的即为最小交换次数
func main() {
input := bufio.NewScanner(os.Stdin)
input.Scan()
arrStr := input.Text()
li := strings.Split(arrStr," ")
keyArr := make([]int,0) // 数组中小于k的元素的下标组成的数组
disArr := make([]int,0) // 上述数组中元素的距离值组成的新数组
input.Scan()
k,_:= strconv.Atoi(input.Text())
for i:=0;i<len(li);i++{
data,_ := strconv.Atoi(li[i])
if data < k {
keyArr = append(keyArr,i)
}
}
if len(keyArr) > 1 {
for i:=0;i<len(keyArr);i++{
for j:=i+1;j<len(keyArr);j++{ // 二次遍历从下一个元素开始计算
s := math.Abs(float64(keyArr[i]-keyArr[j] ))-1 //距离计算:想减绝对值 - 1
disArr = append(disArr,int(s))
}
}
}
if len(disArr) > 0 {
sort.Ints(disArr)
}else{
fmt.Println(0)
}
}