Ma N non è una potenze di 2^k >= N!
Nell’esempio con N = 14, nel costruttore deve venire N = 2^4 = 16.
La tua query non funziona correttamente perché sia il metodo build(1, 0, N) e sia update(1. 0, N) usano l’intervallo aperto [1, N) mentre il metodo query(1, 0, N-1) usa l’intervallo chiuso [0, N-1]. In pratica devi usare per tutti i metodi lo stesso tipo di intervallo.
Ti consiglio anche questa ottima guida per la comprensione dei segment.
1 Mi Piace