
class Solution { // review 1493 O(N) O(1)
public:
    int longestSubarray(vector<int>& a) {
        int l = 0, r = 0, n = (int)a.size(), k = 1, ans = 0;
        for (; r < n; ++r) {
            if (a[r] == 0) --k;
            if (k < 0 && a[l++] == 0) ++k;
            if (k >= 0 && r - l > ans) ans = r - l;
        }
        return ans;
    }
};