You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.4 KiB

2 years ago
#include <bits/stdc++.h>
using namespace std;
// 时间复杂度10000*10000=1e8C++一秒可过
/**
I:
3 2
3 6 1
3
II:
4 2
2 6 11 18
4
264
231
6334
III:
5 3
2 6 11 18 14
7
11143
181447
IV
5 3
1 2 7 8 12
5
8
7+1=81
80
12-8=44
1+0+4=5
*/
const int INF = 0x3f3f3f3f;
const int N = 1010;
int a[N];
int n, k;
int res = INF;
int main() {
cin >> n >> k;
for (int i = 0; i < n; i++) cin >> a[i];
for (int i = 0; i <= n - k; i++) { // 枚举起点
vector<int> b;
for (int j = i; j <= i + k - 1; j++) b.push_back(a[j]); // 将每个可用范围复制到数组b中
sort(b.begin(), b.end()); // 排序
int cnt = 0; // 变更次数
for (int j = 0; j < b.size(); j++) cnt += abs(b[b.size() / 2] - b[j]); // 枚举每个数字与中位数对比
res = min(res, cnt); // 记录最少变更次数
}
printf("%d\n", res);
return 0;
}