I've tried a method for 18 points which worked , also tried diving xor into bitwise and and or operations and tried to club the array elements somehow to prefalcute but didn't really work, what's the best way to approach it?
Asked by: Liman_Rahman on April 7, 2019, 6:34 p.m. Last updated on April 7, 2019, 6:34 p.m.
Prefix-sum is probably the simplest and the best approach to this problem.
Have a look at this editorial which uses prefix-sum based approach.
Comment here if you face diffucilty understanding any part of the editorial or implementing it.
https://discuss.codechef.com/questions/124102/xxor-editorial
Find the binary represention of all the numbers given. Then for each position (i.e. from 0 to 30) count number of 0's and 1's in range l to r. If number of 0's is greater than no. of 1's, then at that position, bit of the new number will be 1 otherwise 0. Similarly find it for all 30 positions. By doing this we can find at each position which bit would maximize the sum.
Try to use prefix sum along with this approach.