280B - Maximum Xor Secondary - CodeForces Solution


data structures implementation two pointers *1800

Please click on ads to support us..

Python Code:

n = int(input().strip())
s = list(map(int, input().strip().split()))
stack = []
max_lucky = 0
for i in range(n):
    while stack and stack[-1] < s[i]:
        max_lucky = max(max_lucky, stack[-1] ^ s[i])
        stack.pop()
    if stack:
        max_lucky = max(max_lucky, stack[-1] ^ s[i])
    stack.append(s[i])
print(max_lucky)

C++ Code:

#include<bits/stdc++.h>
using namespace std;
int n;
int a[1000010];
stack<int> st;
int ans=-1;
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++)
    {
        while(st.size()) {
            ans=max(ans,a[i]^st.top());
            if(a[i]<=st.top())break;
            st.pop();
        }
        st.push(a[i]);
        // if(st.size()>=2)
        // {
        //     int t1=st.top();
        //     st.pop();
        //     int t2=st.top();
        //     ans=max(ans,t1^t2);
        //     cout<<ans<<" ";
        //     st.push(t1);
        // }
    }
    cout<<ans<<endl;
    return 0;
}
		 	    	     	 				 	    	   	


Comments

Submit
0 Comments
More Questions

1538A - Stone Game
1454C - Sequence Transformation
165B - Burning Midnight Oil
17A - Noldbach problem
1350A - Orac and Factors
1373A - Donut Shops
26A - Almost Prime
1656E - Equal Tree Sums
1656B - Subtract Operation
1656A - Good Pairs
1367A - Short Substrings
87A - Trains
664A - Complicated GCD
1635D - Infinite Set
1462A - Favorite Sequence
1445B - Elimination
1656C - Make Equal With Mod
567A - Lineland Mail
1553A - Digits Sum
1359B - New Theatre Square
766A - Mahmoud and Longest Uncommon Subsequence
701B - Cells Not Under Attack
702A - Maximum Increase
1656D - K-good
1426A - Floor Number
876A - Trip For Meal
1326B - Maximums
1635C - Differential Sorting
961A - Tetris
1635B - Avoid Local Maximums