Untitled

 avatar
unknown
java
a year ago
1.7 kB
13
Indexable
import java.io.*;
import java.util.*;
public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        int T = Integer.parseInt(br.readLine());
        while (T-- > 0) {
            int N = Integer.parseInt(br.readLine());
            int[] A = new int[N + 1];
            StringTokenizer st = new StringTokenizer(br.readLine());
            for (int i = 1; i <= N; i++) {
                A[i] = Integer.parseInt(st.nextToken());
            }

            int[][] pref = new int[31][N + 1];
            for (int b = 0; b < 31; b++) {
                for (int i = 1; i <= N; i++) {
                    pref[b][i] = pref[b][i - 1] + (((A[i] >> b) & 1) == 1 ? 1 : 0);
                }
            }

            int Q = Integer.parseInt(br.readLine());
            while (Q-- > 0) {
                st = new StringTokenizer(br.readLine());
                int L = Integer.parseInt(st.nextToken());
                int R = Integer.parseInt(st.nextToken());
                int len = R - L + 1;
                long x1 = 0, x2 = 0, x3 = 0;
                for (int b = 0; b < 31; b++) {
                    int cnt = pref[b][R] - pref[b][L - 1];
                    long val = 1L << b;
                    if (cnt * 2 < len) x1 |= val;
                    if (cnt < len) x2 |= val;
                    if (cnt > 0) x3 |= val;
                }
                sb.append(x1 + x2 + x3).append("\n");
            }
        }
        System.out.print(sb);
    }
}
Editor is loading...
Leave a Comment