Aiuto per Lotteria di quadri (abc_quadri)

Ciao a tutti, non capisco cosa c’è di sbagliato nel mio codice. Ho usato la sliding window technique e non capisco perchè non risolve le subtask in modo corretto.
Qualcuno può gentilmente aiutarmi?

int quadri(int N, long long M, int V[]) {

    int B = 0;
    int magg = 0;
    unordered_map<long long, int> mapp;
    int summ = 0, max_sum = 0;

    for (int i = 0; i < N; i++) {

        if (V[i] >= M) {

            magg ++;

        }

    }
    
    if (magg == N) {

        return 0;

    }

    int l = 0, r = 0;
    while (r < N) {

        summ += V[r];

        while (summ >= M) {
            
            summ -= V[l];
            l++;

        }

        
        B = r - l + 1;
        mapp[summ] = B;
        max_sum = max(max_sum, summ);

        r++;

    }

    return mapp[max_sum];

}

Stai calcolando il valore massimo della somma che stia sotto M mentre il problema ti chiede di calcolare il valore massimo di B per cui la somma rimanga sotto M.

P.S.: c’è anche un overflow

il return è il valore di B della somma massima