Lotteria di quadri (quadri) (15/100) URGENTE help

Non riesco a capire cosa ci sia di sbagliato

int quadri(int N, long long M, int V[ ]){
	int B = 0;
	for(int i = 0;i<N;i++){
		if(M-V[i] > 0){
			M-=V[i];
			B++;
		}
		else{
			while(M-V[i] <= 0){
				if(B == 0)return 0;
				M+=V[i-B];
				B--;
			}
			M-=V[i];
			B++;
		}	
	}
	return B;
}

Ciao, innanzitutto scusa per la risposta un po’ in ritardo…

Per capire meglio cosa fa il programma, potresti spiegare che logica hai applicato nella risoluzione del problema? Leggendo il testo del task, la prima soluzione che mi viene in mente è l’utilizzo di una sliding window. Se non conosci questa tecnica, ti consiglio di visitare questo approfondimento sull’argomento. La complessità di una soluzione così implementata dovrebbe essere circa \mathcal{O}(N^2), tuttavia immagino che con poco sforzo possa essere ridotta a \mathcal{O}(N \log N), se non proprio a \mathcal{O}(N).

Buona fortuna nell’implementazione, se hai qualche dubbio chiedi pure :slight_smile:

1 Mi Piace