#include #include #include void toBitarray(const char* s, bool* S, int k, int fullN) { for (int i = 0; i < k - 1; i++) { S[i] = true; } for (int i = k - 1; i < fullN; i++) { S[i] = (s[i - k + 1] == '1'); } } int minFind(const char* s, int N, int n) { int weightMin = (n + 1) / 2; int fullN = N + weightMin - 1; int change = 0; int HWeight = 0; bool S[fullN]; toBitarray(s, S, weightMin, fullN); for (int i = 0; i < n; i++) { HWeight += S[i] ? 1 : 0; } if (HWeight < weightMin) { S[n - 1] = true; HWeight++; change++; } for (int i = 1; i < fullN - n + 1; i++) { HWeight -= S[i - 1] ? 1 : 0; HWeight += S[i + n - 1] ? 1 : 0; if (HWeight < weightMin) { S[i + n - 1] = true; HWeight++; change++; } } return change; } int main() { int N; char s[1001]; scanf("%d", &N); scanf("%s", s); printf("%d\n", minFind(s, N, 3)); return 0; }