Я пытаюсь решить эту проблему Я требую пробный бой в hackerearth, и я в основном решаю, но я получаю TLE в тестовом сценарии после 3
Мои решения требуют времени
O (Q * R + L-1), что означает O (N ^ 2)
Есть ли способ решить эту проблему
В O (N) или меньше времени
Вот мое решение
#include <stdio.h>
#include <stdlib.h>
#define ll long long
int main(){
ll q,x,n,r,l;
scanf("%lld %lld",&n,&q);
ll arr[n];
for(ll i=0; i<n; i++){
scanf("%lld",&arr[i]);
}
while(q--){
scanf("%lld %lld %lld",&l,&r,&x);
ll sum = 0;
for(ll i=l-1; i<r; i++){
sum += arr[i]^x;
}
printf("%lld\n",sum);
}
}
Проблема:
Вам дан массив целых чисел A размера N. Теперь вам дано Q запросов для выполнения над этим массивом.
В каждом запросе вы получаете 3 целых числа, разделенных пробелами L, R и X, вам необходимо вывести суммирование XOR для X с каждым элементом массива из диапазона от L до R, включая оба (индексация на основе 1) ).
sum (i=l to r) of A[i] XOR X In simple terms
Ограничения:
1 <= N, Q <= 10 ^ 5 </p>
1 <= A [i] <= 10 ^ 9 </p>
1 <= L, R <= N </p>
1 <= X <= 10 ^ 9 </p>