Help me in solving flipping array

My issue

Did not get it i have changed the code for 10 to 15 times

My code

#include <iostream>
#include <vector>

using namespace std;

int main() {
    int n;
    cin >> n;

    vector<int> arr(n);
    for (int i = 0; i < n; i++)
        cin >> arr[i];

    int max_len = 0, curr_len = 0, flip_count = 0, start = 0;

    for (int i = 0; i < n; i++) {
        if (arr[i] == 1)
            curr_len++;
        else {
            flip_count++;
            curr_len++;
        }

        while (flip_count > 1) {
            if (arr[start] == 0)
                flip_count--;
            curr_len--;
            start++;
        }

        max_len = max(max_len, curr_len);
    }

    if (max_len == 0)
        max_len = n;

    cout << max_len << endl;

    return 0;
}

Learning course: Data Structures and Algorithms
Problem Link: https://www.codechef.com/learn/course/dsa-detailed/DSAAG03/problems/DSCPPAS277