Aiuto con Lotteria

Buongiorno,
Sono bloccato a 15/100 in lotteria di quadri e non riesco proprio a capire cosa non vada bene con il mio algoritmo…
Ho letto un po’ in giro sui forum e sembra che la strategia che ho applicato sia giusta. Qualcuno ha idea su cosa possa essere sbagliato?

int quadri(int N, long long M, int V[]) {
    int B = 0;
    long long cValue = 0; // Somma da posizione di inizio fino al B-esimo numero successivo
    
    while (B < N && cValue + V[B] <= M)
    {
        cValue += V[B];
        B++;
    }
    
    int Start = 0;
    
    for (int End = B; B > 0 && End < N; End++)
    {
        cValue += V[End] - V[Start];
        while (cValue > M && B > 0)
        {
            cValue -= V[Start];
            Start++;
            B-=1;
        }
        Start++;
    }
    
    return B;
}

Ciao,
hai ragione, la tua strategia è corretta, hai solo un piccolo bug nell’aggiornare la dimensione della finestra spostando Start nel while. Qual’è l’indice del primo elemento che dovresti togliere da cValue?

5 Mi Piace

Grazie per lo spunto, ora funziona.