Alex_tz307

secvente infopro C1

Nov 15th, 2020
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define INF 0x3f3f3f3f
  3.  
  4. using namespace std;
  5.  
  6. ifstream fin("secvente.in");
  7. ofstream fout("secvente.out");
  8.  
  9. int main() {
  10.     fin.sync_with_stdio(false);
  11.     fout.sync_with_stdio(false);
  12.     fin.tie(nullptr);
  13.     fout.tie(nullptr);
  14.     int N, t;
  15.     string s;
  16.     fin >> N >> t >> s;
  17.     s = '0' + s;
  18.     int cnt1 = 0;
  19.     for(char x : s)
  20.         cnt1 += (x == '1');
  21.     if(2 * t > cnt1 || 2 * t > N) {
  22.         fout << -1;
  23.         return 0;
  24.     }
  25.     vector < int > start(N + 2, INF);
  26.     start[1] = 0;
  27.     for(int i = 1; i <= t; ++i)
  28.         if(s[i] == '0')
  29.             ++start[1];
  30.     for(int i = t + 1; i <= N; ++i) {
  31.         start[i - t + 1] = start[i - t];
  32.         if(s[i - t] == '0')
  33.             --start[i - t + 1];
  34.         if(s[i] == '0')
  35.             ++start[i - t + 1];
  36.     }
  37.     vector < int > mn(N + 2, INF);
  38.     for(int i = N; i > 0; --i)
  39.         mn[i] = min(start[i], mn[i + 1]);
  40.     int ans = INF;
  41.     for(int i = 1; i <= N - 2 * t + 2; ++i)
  42.         ans = min(ans, start[i] + mn[i + t]);
  43.     if(ans == INF)
  44.         ans = -1;
  45.     fout << ans;
  46. }
  47.  
Add Comment
Please, Sign In to add comment