Занулити підвідрізок
Це задача з градерами.
Для масиву додатних цілих чисел довжини визначимо наступним чином:
нехай початково деяка змінна рівна ;
за одну монету дозволяється збільшити значення на ;
за одну монету дозволяється обрати елемент масиву () та замінити його на , де позначає операцію побітового виключного АБО;
дорівнює мінімальній кількості монет, необхідній для того, щоб зробити всі елементи масиву одночасно рівними нулю.
Побітове виключне АБО невід'ємних цілих чисел та дорівнює невід'ємному цілому числу, у якого у двійковому записі на певній позиції знаходиться одиниця тоді і тільки тоді, коли у двійкових записах та на цій позиції знаходяться різні значення. Наприклад, .
Задано масив додатних цілих чисел довжини та запитів виду , . Для кожного запиту потрібно знайти .
Вхідні дані
У першому рядку задано три цілі числа , та (; ) — кількість чисел, кількість запитів та формат запитів відповідно.
У другому рядку задано цілих чисел () — елементи масиву .
У наступних рядках задано по два цілі числа та () — параметри -го запиту.
Спочатку буде викликана функція init
рівно один раз.
Якщо , то буде викликана рівно один раз функція askAll
з усіма запитами. Якщо , то функція ask
буде викликана рівно разів.
Протокол взаємодії
Вам потрібно реалізувати наступні функції:
void init(integer n, array of integers a)
— ціле число, яке позначає довжину масиву;
— масив цілих чисел довжиною ;
ця функція нічого не повертає.
integer ask(integer l, integer r)
— ціле число, яке позначає ліву межу запиту;
— ціле число, яке позначає праву межу запиту;
ця функція повертає ціле число — .
array of integers askAll(integer q, array of integers l, array of integers r)
— ціле число, яке позначає кількість запитів;
— масив цілих чисел довжиною ; позначає ліву межу -го запиту;
— масив цілих чисел довжиною ; позначає праву межу -го запиту;
ця функція повертає масив цілих чисел; -те число має бути рівне відповіді на -й запит.
Вихідні дані
Градер виведе у окремих рядках цілих чисел — відповіді на запити.
Приклади
Оцінювання
( бали): , для ;
( балів): , для ;
( бали): , для деякого натурального ;
( балів): , для ;
( балів): , ;
( балів): , та для .
( балів): , ;
( балів): ;
( балів): , ;
( балів): .