
#include <bits/stdc++.h>
using namespace std;
  
void minimumOperations(vector<int>& A, int K)
{
    
    
    vector<int> isflipped(A.size(), 0);
  
    
    int ans = 0;
  
    
    for (int i = 0; i < A.size(); i++) {
  
        
        
        if (i > 0) {
            isflipped[i] += isflipped[i - 1];
            isflipped[i] %= 2;
        }
  
        
        
        if (A[i] == 0 && !isflipped[i]) {
  
            
            
            
            if ((A.size() - i + 1) <= K) {
                cout << -1;
                return;
            }
  
            
            ans++;
  
            
            
            isflipped[i]++;
  
            
            isflipped[i + K]--;
        }
        else if (A[i] == 1 && isflipped[i]) {
  
            
            
            
            if ((A.size() - i + 1) <= K) {
                cout << -1;
                return;
            }
  
            
            ans++;
  
            
            
            isflipped[i]++;
  
            
            isflipped[i + K]--;
        }
    }
  
    
    cout << ans;
}
  
int main()
{
    vector<int> arr = { 0, 1, 0 };
    int K = 1;
    minimumOperations(arr, K);
  
    return 0;
}
 
 
 
 
0 comments:
Post a Comment