// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
// Function to count min flips
int CountMinFlips(string s, int n,
int k)
{
// To store the count of minimum
// flip required
int cnt = 0;
// To store the position of last '1'
int prev = -1;
for (int i = 0; i < k; i++) {
// Track last position of '1'
// in current window of size k
if (s[i] == '1') {
prev = i;
}
}
// If no '1' is present in the current
// window of size K
if (prev == -1) {
cnt++;
// Set last index of window '1'
s[k - 1] = '1';
// Track previous '1'
prev = k - 1;
}
// Traverse the given string
for (int i = k; i < n; i++) {
// If the current bit is not set,
// then the condition for flipping
// the current bit
if (s[i] != '1') {
if (prev <= (i - k)) {
// Set i'th index to '1'
s[i] = '1';
// Track previous one
prev = i;
// Increment count
cnt++;
}
}
// Else update the prev set bit
// position to current position
else {
prev = i;
}
}
// Return the final count
return (cnt);
}
// Driver Code
int main()
{
// Given binary string
string str = "00010110";
// Size of given string str
int n = str.size();
// Window size
int k = 2;
// Function Call
cout << CountMinFlips(str, n, 3)
<< endl;
return 0;
}
Ly8gQysrIHByb2dyYW0gZm9yIHRoZSBhYm92ZSBhcHByb2FjaAojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmN0aW9uIHRvIGNvdW50IG1pbiBmbGlwcwppbnQgQ291bnRNaW5GbGlwcyhzdHJpbmcgcywgaW50IG4sCiAgICAgICAgICAgICAgICAgIGludCBrKQp7CgogICAgLy8gVG8gc3RvcmUgdGhlIGNvdW50IG9mIG1pbmltdW0KICAgIC8vIGZsaXAgcmVxdWlyZWQKICAgIGludCBjbnQgPSAwOwoKICAgIC8vIFRvIHN0b3JlIHRoZSBwb3NpdGlvbiBvZiBsYXN0ICcxJwogICAgaW50IHByZXYgPSAtMTsKCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGs7IGkrKykgewoKICAgICAgICAvLyBUcmFjayBsYXN0IHBvc2l0aW9uIG9mICcxJwogICAgICAgIC8vIGluIGN1cnJlbnQgd2luZG93IG9mIHNpemUgawogICAgICAgIGlmIChzW2ldID09ICcxJykgewogICAgICAgICAgICBwcmV2ID0gaTsKICAgICAgICB9CiAgICB9CgogICAgLy8gSWYgbm8gJzEnIGlzIHByZXNlbnQgaW4gdGhlIGN1cnJlbnQKICAgIC8vIHdpbmRvdyBvZiBzaXplIEsKICAgIGlmIChwcmV2ID09IC0xKSB7CiAgICAgICAgY250Kys7CgogICAgICAgIC8vIFNldCBsYXN0IGluZGV4IG9mIHdpbmRvdyAnMScKICAgICAgICBzW2sgLSAxXSA9ICcxJzsKCiAgICAgICAgLy8gVHJhY2sgcHJldmlvdXMgJzEnCiAgICAgICAgcHJldiA9IGsgLSAxOwogICAgfQoKICAgIC8vIFRyYXZlcnNlIHRoZSBnaXZlbiBzdHJpbmcKICAgIGZvciAoaW50IGkgPSBrOyBpIDwgbjsgaSsrKSB7CgogICAgICAgIC8vIElmIHRoZSBjdXJyZW50IGJpdCBpcyBub3Qgc2V0LAogICAgICAgIC8vIHRoZW4gdGhlIGNvbmRpdGlvbiBmb3IgZmxpcHBpbmcKICAgICAgICAvLyB0aGUgY3VycmVudCBiaXQKICAgICAgICBpZiAoc1tpXSAhPSAnMScpIHsKICAgICAgICAgICAgaWYgKHByZXYgPD0gKGkgLSBrKSkgewoKICAgICAgICAgICAgICAgIC8vIFNldCBpJ3RoIGluZGV4IHRvICcxJwogICAgICAgICAgICAgICAgc1tpXSA9ICcxJzsKCiAgICAgICAgICAgICAgICAvLyBUcmFjayBwcmV2aW91cyBvbmUKICAgICAgICAgICAgICAgIHByZXYgPSBpOwoKICAgICAgICAgICAgICAgIC8vIEluY3JlbWVudCBjb3VudAogICAgICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIEVsc2UgdXBkYXRlIHRoZSBwcmV2IHNldCBiaXQKICAgICAgICAvLyBwb3NpdGlvbiB0byBjdXJyZW50IHBvc2l0aW9uCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHByZXYgPSBpOwogICAgICAgIH0KICAgIH0KCiAgICAvLyBSZXR1cm4gdGhlIGZpbmFsIGNvdW50CiAgICByZXR1cm4gKGNudCk7Cn0KCi8vIERyaXZlciBDb2RlCmludCBtYWluKCkKewogICAgLy8gR2l2ZW4gYmluYXJ5IHN0cmluZwogICAgc3RyaW5nIHN0ciA9ICIwMDAxMDExMCI7CgogICAgLy8gU2l6ZSBvZiBnaXZlbiBzdHJpbmcgc3RyCiAgICBpbnQgbiA9IHN0ci5zaXplKCk7CgogICAgLy8gV2luZG93IHNpemUKICAgIGludCBrID0gMjsKCiAgICAvLyBGdW5jdGlvbiBDYWxsCiAgICBjb3V0IDw8IENvdW50TWluRmxpcHMoc3RyLCBuLCAzKQogICAgICAgICA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0=
MTAKYWJhCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtzCmdlZWtzZm9yZ2Vla3MKZ2Vla3Nmb3JnZWVrcwpnZWVrc2ZvcmdlZWtz
10
aba
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks
geeksforgeeks