problem-http://www.spoj.com/problems/ANDROUND/

Can someone please help provide a detailed solution on the above problem, am not able to understand why and how to apply segment tree in the given problem.Please Help

Think of a particular element `A[i]`

. After 1 round it becomes `A[i-1] & A[i] & A[i+1]`

. After 2 rounds it becomes `(A[i-2] & A[i-1] & A[i]) & (A[i-1] & A[i] & A[i+1]) & (A[i] & A[i+1] & A[i+2])`

which simplifies to `A[i-2] & A[i-1] & A[i] & A[i+1] & A[i+2]`

. So you can see that after K rounds it becomes `A[i-K] & A[i-K+1] & ... A[i] & ... A[i+K-1] & A[i+K]`

. Now this is a simple range query on a segment tree built on the array A. Likewise you must query for each element in A to get the whole array after K rounds. Also remember that the array is cyclic, so you may have to adjust your queries so that it works out.