Loading...
Submission
# When Author Problem Language CPU Memory
20855 2024-06-12 23:44:18 AHAMMED_99 Find MinMaxXoR Number C++ 17 1101 ms 3408 kb Time Limit Exceeded - 7
Test Cases
# CPU Memory Points
1 1 ms 3408 kb 1 Accepted
2 1 ms 3400 kb 1 Accepted
3 1 ms 3384 kb 1 Accepted
4 3 ms 3256 kb 1 Accepted
5 56 ms 3400 kb 1 Accepted
6 221 ms 3388 kb 1 Accepted
7 1101 ms 652 kb 0 Time Limit Exceeded
8 0 ms 0 kb 0 Skipped
9 0 ms 0 kb 0 Skipped
10 0 ms 0 kb 0 Skipped
11 0 ms 0 kb 0 Skipped
12 0 ms 0 kb 0 Skipped
13 0 ms 0 kb 0 Skipped
14 0 ms 0 kb 0 Skipped
15 0 ms 0 kb 0 Skipped
16 0 ms 0 kb 0 Skipped
Source Code
  1. #include <iostream>
  2. #include <vector>
  3. #include <deque>
  4.  
  5. using namespace std;
  6.  
  7. // Function to calculate MinMaxXoR
  8. int calculateMinMaxXoR(const vector<int>& A, int N) {
  9. int MinMaxXoR = 0;
  10.  
  11. for (int length = 2; length <= N; ++length) {
  12. deque<int> minDeque, maxDeque;
  13. for (int i = 0; i < N; ++i) {
  14. // Remove elements not in the current window
  15. if (!minDeque.empty() && minDeque.front() <= i - length) {
  16. minDeque.pop_front();
  17. }
  18. if (!maxDeque.empty() && maxDeque.front() <= i - length) {
  19. maxDeque.pop_front();
  20. }
  21.  
  22. // Maintain deques in non-increasing order for min and max
  23. while (!minDeque.empty() && A[minDeque.back()] >= A[i]) {
  24. minDeque.pop_back();
  25. }
  26. while (!maxDeque.empty() && A[maxDeque.back()] <= A[i]) {
  27. maxDeque.pop_back();
  28. }
  29.  
  30. minDeque.push_back(i);
  31. maxDeque.push_back(i);
  32.  
  33. // Calculate XOR for the current window
  34. if (i >= length - 1) {
  35. int minVal = A[minDeque.front()];
  36. int maxVal = A[maxDeque.front()];
  37. MinMaxXoR ^= (minVal ^ maxVal);
  38. }
  39. }
  40. }
  41.  
  42. return MinMaxXoR;
  43. }
  44.  
  45. int main() {
  46. int N;
  47. cin >> N;
  48. vector<int> A(N);
  49. for (int i = 0; i < N; ++i) {
  50. cin >> A[i];
  51. }
  52.  
  53. int result = calculateMinMaxXoR(A, N);
  54. cout << result << endl;
  55.  
  56. return 0;
  57. }
  58.