Pagini recente » Cod sursa (job #1419980) | Cod sursa (job #2964945) | Cod sursa (job #3219265) | Cod sursa (job #2487739) | Cod sursa (job #2017475)
#include <iostream>
#include <vector>
using namespace std;
int main() {
/* freopen("input", "r", stdin);
freopen("output", "w", stdout);*/
ios::sync_with_stdio(false); cin.tie(0);
int n, k;
cin >> n >> k;
vector < long long > v(n + 1);
for (int i = 1; i <= n ; i ++) {
cin >> v[i];
}
vector < long long > odd(k + 1);
vector < long long > even(k + 1);
vector < vector < long long > > group(k + 1);
for (int i = 1; i <= k; i ++) {
for (int j = i; j <= n; j += k) {
group[i].push_back(j);
if (v[j] % 2 == 1)
odd[i] ++;
else
even[i] ++;
}
}
long long sol = 0;
for (int i = 1; i <= k; i ++) {
if (even[i] < odd[i]) {
for (auto x : group[i]) {
if (v[x] % 2 == 0) v[x] = 1;
}
sol += even[i];
}
else {
for (auto x : group[i]) {
if (v[x] % 2 == 1) v[x] = 0;
}
sol += odd[i];
}
}
long long test = 0;
for (int i = 1; i <= k; i ++) {
test += v[i];
}
if (test % 2 == 0) {
cout << sol << '\n';
return 0;
}
int good_sol = 1e9;
for (int i = 1; i <= k; i ++) {
int change = sol - min(even[i], odd[i]);
change += max(even[i], odd[i]);
good_sol = min(good_sol, change);
}
cout << good_sol << '\n';
}