Submission #69682783


Source Code Expand

import java.io.*;
import java.util.*;

class TrieNode {
    TrieNode[] children = new TrieNode[2];
}

public class Main {
    static TrieNode root = new TrieNode();
    
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        
        int n = Integer.parseInt(st.nextToken());
        long m = Long.parseLong(st.nextToken());
        
        st = new StringTokenizer(br.readLine());
        Set<Integer> set = new TreeSet<>();
        
        for (int i = 0; i < n; i++) {
            set.add(Integer.parseInt(st.nextToken()));
        }
        
        for (int num : set) {
            insert(num);
        }
        
        System.out.println(calculateSum(0, m, 30));
        br.close();
    }
    
    static void insert(int num) {
        TrieNode curr = root;
        for (int i = 30; i >= 0; i--) {
            int bit = (num >> i) & 1;
            if (curr.children[bit] == null) {
                curr.children[bit] = new TrieNode();
            }
            curr = curr.children[bit];
        }
    }
    
    static int query(int x) {
        TrieNode curr = root;
        int result = 0;
        
        for (int i = 30; i >= 0; i--) {
            int bit = (x >> i) & 1;
            if (curr.children[bit] != null) {
                curr = curr.children[bit];
            } else {
                result |= (1 << i);
                curr = curr.children[1 - bit];
            }
        }
        return result;
    }
    
    static long calculateSum(long l, long r, int bit) {
        if (l >= r || bit < 0) return 0;
        
        if (r - l <= 100000) {
            long sum = 0;
            for (long x = l; x < r; x++) {
                sum += query((int)x);
            }
            return sum;
        }
        
        long mask = 1L << bit;
        long mid = ((l + mask - 1) / mask) * mask;
        
        if (mid >= r) {
            return calculateSum(l, r, bit - 1);
        }
        
        return calculateSum(l, mid, bit - 1) + calculateSum(mid, r, bit - 1);
    }
}

Submission Info

Submission Time
Task G - Sum of Min of XOR
User addy
Language Java (OpenJDK 17)
Score 0
Code Size 2251 Byte
Status WA
Exec Time 909 ms
Memory 192816 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 575
Status
AC × 3
AC × 6
WA × 39
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_handmade_00.txt, 01_handmade_01.txt, 01_handmade_02.txt, 01_handmade_03.txt, 01_handmade_04.txt, 01_handmade_05.txt, 02_random_00.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 02_random_06.txt, 02_random_07.txt, 02_random_08.txt, 02_random_09.txt, 02_random_10.txt, 02_random_11.txt, 02_random_12.txt, 02_random_13.txt, 02_random_14.txt, 02_random_15.txt, 02_random_16.txt, 02_random_17.txt, 02_random_18.txt, 02_random_19.txt, 02_random_20.txt, 02_random_21.txt, 02_random_22.txt, 02_random_23.txt, 02_random_24.txt, 02_random_25.txt, 02_random_26.txt, 02_random_27.txt, 02_random_28.txt, 02_random_29.txt, 02_random_30.txt, 02_random_31.txt, 02_random_32.txt, 02_random_33.txt, 02_random_34.txt, 02_random_35.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 40 ms 34528 KiB
00_sample_01.txt AC 40 ms 34620 KiB
00_sample_02.txt AC 48 ms 35284 KiB
01_handmade_00.txt AC 39 ms 34760 KiB
01_handmade_01.txt AC 39 ms 34664 KiB
01_handmade_02.txt WA 37 ms 34572 KiB
01_handmade_03.txt AC 38 ms 34592 KiB
01_handmade_04.txt WA 39 ms 34580 KiB
01_handmade_05.txt WA 561 ms 150244 KiB
02_random_00.txt WA 863 ms 187784 KiB
02_random_01.txt WA 869 ms 187776 KiB
02_random_02.txt WA 857 ms 187760 KiB
02_random_03.txt WA 865 ms 187736 KiB
02_random_04.txt WA 873 ms 187792 KiB
02_random_05.txt WA 322 ms 96980 KiB
02_random_06.txt WA 270 ms 81784 KiB
02_random_07.txt WA 518 ms 112836 KiB
02_random_08.txt WA 517 ms 119412 KiB
02_random_09.txt WA 650 ms 156176 KiB
02_random_10.txt WA 850 ms 187680 KiB
02_random_11.txt WA 853 ms 187728 KiB
02_random_12.txt WA 850 ms 187708 KiB
02_random_13.txt WA 876 ms 187588 KiB
02_random_14.txt WA 909 ms 192816 KiB
02_random_15.txt WA 285 ms 81820 KiB
02_random_16.txt WA 613 ms 152188 KiB
02_random_17.txt WA 596 ms 150388 KiB
02_random_18.txt WA 334 ms 96496 KiB
02_random_19.txt WA 842 ms 182364 KiB
02_random_20.txt WA 195 ms 55780 KiB
02_random_21.txt WA 194 ms 55740 KiB
02_random_22.txt WA 240 ms 57772 KiB
02_random_23.txt WA 272 ms 58568 KiB
02_random_24.txt WA 313 ms 72708 KiB
02_random_25.txt WA 311 ms 72328 KiB
02_random_26.txt WA 416 ms 89660 KiB
02_random_27.txt WA 381 ms 90160 KiB
02_random_28.txt WA 486 ms 106576 KiB
02_random_29.txt WA 478 ms 106696 KiB
02_random_30.txt WA 556 ms 150480 KiB
02_random_31.txt WA 551 ms 150460 KiB
02_random_32.txt WA 566 ms 150284 KiB
02_random_33.txt WA 808 ms 186996 KiB
02_random_34.txt WA 801 ms 186988 KiB
02_random_35.txt WA 799 ms 186972 KiB