Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define INF 0x3f3f3f3f
- using namespace std;
- ifstream fin("secvente.in");
- ofstream fout("secvente.out");
- int main() {
- fin.sync_with_stdio(false);
- fout.sync_with_stdio(false);
- fin.tie(nullptr);
- fout.tie(nullptr);
- int N, t;
- string s;
- fin >> N >> t >> s;
- s = '0' + s;
- int cnt1 = 0;
- for(char x : s)
- cnt1 += (x == '1');
- if(2 * t > cnt1 || 2 * t > N) {
- fout << -1;
- return 0;
- }
- vector < int > start(N + 2, INF);
- start[1] = 0;
- for(int i = 1; i <= t; ++i)
- if(s[i] == '0')
- ++start[1];
- for(int i = t + 1; i <= N; ++i) {
- start[i - t + 1] = start[i - t];
- if(s[i - t] == '0')
- --start[i - t + 1];
- if(s[i] == '0')
- ++start[i - t + 1];
- }
- vector < int > mn(N + 2, INF);
- for(int i = N; i > 0; --i)
- mn[i] = min(start[i], mn[i + 1]);
- int ans = INF;
- for(int i = 1; i <= N - 2 * t + 2; ++i)
- ans = min(ans, start[i] + mn[i + t]);
- if(ans == INF)
- ans = -1;
- fout << ans;
- }
Add Comment
Please, Sign In to add comment