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
#include <iostream> #include <vector> #include <deque> using namespace std; // Function to calculate MinMaxXoR int calculateMinMaxXoR(const vector<int>& A, int N) { int MinMaxXoR = 0; for (int length = 2; length <= N; ++length) { deque<int> minDeque, maxDeque; for (int i = 0; i < N; ++i) { // Remove elements not in the current window if (!minDeque.empty() && minDeque.front() <= i - length) { minDeque.pop_front(); } if (!maxDeque.empty() && maxDeque.front() <= i - length) { maxDeque.pop_front(); } // Maintain deques in non-increasing order for min and max while (!minDeque.empty() && A[minDeque.back()] >= A[i]) { minDeque.pop_back(); } while (!maxDeque.empty() && A[maxDeque.back()] <= A[i]) { maxDeque.pop_back(); } minDeque.push_back(i); maxDeque.push_back(i); // Calculate XOR for the current window if (i >= length - 1) { int minVal = A[minDeque.front()]; int maxVal = A[maxDeque.front()]; MinMaxXoR ^= (minVal ^ maxVal); } } } return MinMaxXoR; } int main() { int N; cin >> N; vector<int> A(N); for (int i = 0; i < N; ++i) { cin >> A[i]; } int result = calculateMinMaxXoR(A, N); cout << result << endl; return 0; }