Lotteria di quadri - (quadri)

Salve, stavo provando a risolvere [quadri(https://training.olinfo.it/#/task/abc_quadri/statement) , ma non passa tutti i testcase del 3, 4, 5; faccio pure il casting in long long, ma proprio non capisco dove sbaglio.

Questo è il codice:

int quadri(int n, ll m, int* v) {

	int b = 0, i = 0;
	ll somma = 0LL;

	while(((somma + v[i]) <= m) && (i < n)) {
		somma += (ll)v[i];
		++i, ++b;
	}

	for(; i < n; ++i) {
		if(v[i] > m) 
			return 0;
			
		somma += (ll)v[i] - v[i - b];
		while(somma > m)
			somma -= (ll)v[i - b], --b;
	}

	return b;
}

Grazie in iìanticipo :blush:

Ciao! Basta solo invertire l’ordine di somma -= (ll)v[i - b] e --b, il resto è giusto :slightly_smiling_face:
Se vuoi un consiglio spassionato, nel while(((somma + v[i]) <= m) && (i < n)) è sempre meglio mettere il controllo su i < n prima del resto, altrimenti potrebbe andarti in segmentation fault.

2 Mi Piace

Grazie mille, non ci avevo proprio fatto caso :blush: