<script>
const MAX = 100005;
var
seg = Array(4 * MAX).fill(0);
function
build(node , l , r , a) {
if
(l == r)
seg[node] = a[l];
else
{
var
mid = parseInt((l + r) / 2);
build(2 * node, l, mid, a);
build(2 * node + 1, mid + 1, r, a);
seg[node] = (seg[2 * node] | seg[2 * node + 1]);
}
}
function
query(node , l , r , start , end , a) {
if
(l > end || r < start)
return
0;
if
(start <= l && r <= end)
return
seg[node];
var
mid = parseInt((l + r) / 2);
return
((query(2 * node, l, mid, start, end, a)) | (query(2 * node + 1, mid + 1, r, start, end, a)));
}
function
orsum(a , n , q , k) {
build(1, 0, n - 1, a);
for
(j = 0; j < q; j++) {
var
i = k[j] % (n / 2);
var
sec = query(1, 0, n - 1, n / 2 - i, n - i - 1, a);
var
first = (query(1, 0, n - 1, 0, n / 2 - 1 - i, a) | query(1, 0, n - 1, n - i, n - 1, a));
var
temp = sec + first;
document.write(temp +
"<br/>"
);
}
}
var
a = [ 7, 44, 19, 86, 65, 39, 75, 101 ];
var
n = a.length;
var
q = 2;
var
k = [ 4, 2 ];
orsum(a, n, q, k);
</script>