fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main() {
  5. int n;
  6. cin>>n;
  7. int a[n];
  8. for(int i=0;i<n;i++) {cin>>a[i]; }
  9. int k;cin>>k;
  10. unordered_map<int,int> mp1,mp2;
  11. mp1[0]=-1,mp2[0]=-1;
  12. int ans1=0,ans2=INT_MAX;
  13. int x=0;
  14. for(int j=0;j<n;j++){
  15. x^=a[j];
  16. if(mp1.find(x^k)!=mp1.end()){
  17. int i=mp1[x^k]+1;
  18. ans2=min(ans2,j-i+1);
  19. }
  20. mp1[x]=j;
  21. if(mp2.find(x^k)!=mp2.end()){
  22. int i=mp2[x^k]+1;
  23. ans1=max(ans1,j-i+1);
  24. }
  25. if(mp2.find(x^k)==mp2.end()){
  26. mp2[x]=j;
  27. }
  28.  
  29.  
  30. }
  31. cout<<ans1<<" "<<ans2;
  32. }
Success #stdin #stdout 0.01s 5312KB
stdin
5 
1 4 5 2 3
5
stdout
2 1