fork(1) download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. // Функция для вычисления XOR всех элементов до индекса k
  7. int computeXOR(const vector<int>& prefixXOR, long long k) {
  8. if (k == 0) return 0;
  9. if (k > prefixXOR.size()) return prefixXOR.back();
  10. return prefixXOR[k - 1];
  11. }
  12.  
  13. int main() {
  14. int t;
  15. cin >> t;
  16.  
  17. while (t--) {
  18. int n;
  19. long long l, r;
  20. cin >> n >> l >> r;
  21.  
  22. vector<int> a(n);
  23. for (int i = 0; i < n; ++i) {
  24. cin >> a[i];
  25. }
  26.  
  27. // Вычисляем префиксный XOR
  28. vector<int> prefixXOR(n);
  29. prefixXOR[0] = a[0];
  30. for (int i = 1; i < n; ++i) {
  31. prefixXOR[i] = prefixXOR[i - 1] ^ a[i];
  32. }
  33.  
  34. // Вычисляем a_l
  35. long long index = l - 1; // Переводим в 0-индексацию
  36. int result;
  37.  
  38. if (index < n) {
  39. result = a[index];
  40. } else {
  41. long long half = index / 2;
  42. result = computeXOR(prefixXOR, half);
  43. }
  44.  
  45. // Выводим результат
  46. cout << result << endl;
  47. }
  48.  
  49. return 0;
  50. }
Success #stdin #stdout 0.01s 5292KB
stdin
12 69 69
1 0 0 0 0 1 0 1 0 1 1 0
stdout
0
0
0
0
0
0
0
0
0
0
0
0