fork download
  1.  
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4.  
  5. int main() {
  6. int n;
  7. cin >> n;
  8.  
  9. vector<int> arr(n);
  10. for (int i = 0; i < n; i++)
  11. cin >> arr[i];
  12.  
  13. unordered_map<int, vector<pair<int, int>>> mp;
  14.  
  15. for (int k = 2; k < n - 1; k++) {
  16. int j = k - 1;
  17.  
  18. // Store earlier pairs (i, j).
  19. for (int i = 0; i < j; i++) {
  20. int xr = arr[i] ^ arr[j];
  21. mp[xr].push_back({i, j});
  22. }
  23.  
  24. // Find matching pairs (k, l).
  25. for (int l = k + 1; l < n; l++) {
  26. int target = arr[k] ^ arr[l];
  27.  
  28. auto it = mp.find(target);
  29.  
  30. if (it != mp.end()) {
  31. for (auto [i, j] : it->second) {
  32. cout << "[" << i + 1 << ","
  33. << j + 1 << ","
  34. << k + 1 << ","
  35. << l + 1 << "]\n";
  36. }
  37. }
  38. }
  39. }
  40.  
  41. return 0;
  42. }
  43.  
Success #stdin #stdout 0s 5324KB
stdin
4 
1 2 3 0
stdout
[1,2,3,4]