#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int maxSubarrayXOR( int arr[ ] , int n)
{
int ans = INT_MIN ; // Initialize result
// Pick starting points of subarrays
for ( int i= 0 ; i< n; i++ )
{
int curr_xor = 0 ; // to store xor of current subarray
// Pick ending points of subarrays starting with i
for ( int j= i; j< n; j++ )
{
curr_xor = curr_xor ^ arr[ j] ;
cout << "value is " << curr_xor<< " ;" << ans<< endl;
ans = max( ans, curr_xor) ;
}
}
return ans;
}
// Driver program to test above functions
int main( )
{
int arr[ ] = { 8 , 1 , 2 , 12 } ;
int n = sizeof ( arr) / sizeof ( arr[ 0 ] ) ;
cout << "Max subarray XOR is " << maxSubarrayXOR( arr, n) ;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgoKaW50IG1heFN1YmFycmF5WE9SKGludCBhcnJbXSwgaW50IG4pIAp7IAogICAgaW50IGFucyA9IElOVF9NSU47ICAgICAvLyBJbml0aWFsaXplIHJlc3VsdCAKICAKICAgIC8vIFBpY2sgc3RhcnRpbmcgcG9pbnRzIG9mIHN1YmFycmF5cyAKICAgIGZvciAoaW50IGk9MDsgaTxuOyBpKyspIAogICAgeyAKICAgICAgICBpbnQgY3Vycl94b3IgPSAwOyAvLyB0byBzdG9yZSB4b3Igb2YgY3VycmVudCBzdWJhcnJheSAKICAKICAgICAgICAvLyBQaWNrIGVuZGluZyBwb2ludHMgb2Ygc3ViYXJyYXlzIHN0YXJ0aW5nIHdpdGggaSAKICAgICAgICBmb3IgKGludCBqPWk7IGo8bjsgaisrKSAKICAgICAgICB7IAogICAgICAgICAgICBjdXJyX3hvciA9IGN1cnJfeG9yIF4gYXJyW2pdOyAKICAgICAgICAgICAgY291dDw8InZhbHVlIGlzICI8PGN1cnJfeG9yPDwiIDsiPDwgYW5zPDxlbmRsOwogICAgICAgICAgICBhbnMgPSBtYXgoYW5zLCBjdXJyX3hvcik7IAogICAgICAgICAgICAKICAgICAgICB9IAogICAgfSAKICAgIHJldHVybiBhbnM7IAp9IAogIAovLyBEcml2ZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9ucyAKaW50IG1haW4oKSAKeyAKICAgIGludCBhcnJbXSA9IHs4LCAxLCAyLCAxMn07IAogICAgaW50IG4gPSBzaXplb2YoYXJyKS9zaXplb2YoYXJyWzBdKTsgCiAgICBjb3V0IDw8ICJNYXggc3ViYXJyYXkgWE9SIGlzICIgPDwgbWF4U3ViYXJyYXlYT1IoYXJyLCBuKTsgCiAgICByZXR1cm4gMDsgCn0g