#include<bits/stdc++.h>
using namespace std;
int n, k, ll;
string s;
int t1, t2;
long long ans;
bool check(int x) {
int s1 = 0, s2 = 0, ans = 0, t = 1;
for (int i = 0; i < ll; i++) {
if (s[i] == '0') {
ans += s2;
s1++;
} else {
ans += s1;
s2++;
}
if (ans > x) {
if (s[i] == '0') {
s1 = 1;
s2 = 0;
} else {
s2 = 1;
s1 = 0;
}
ans = 0;
t++;
}
}
return (t <= k);
}
int main () {
scanf("%d%d", &n, &k);
cin >> s;
ll = s.size();
for (int i = 0; i < ll; i++) {
if (s[i] == '0') {
t1++;
} else {
t2++;
}
}
long long l = 1, r = 1ll * t1 * t2;
if (r == 0) {
printf("0\n");
return 0;
}
while (l <= r) {
long long m = (l + r) >> 1;
if (check(m)) {
r = m - 1;
ans = m;
} else {
l = m + 1;
}
}
printf("%d\n", ans);
return 0;
}
如果帮忙发现错误,请@我一下
WA 13