1
+ package String .P13505 ;
2
+
3
+ import java .io .*;
4
+ import java .util .*;
5
+
6
+ public class Main {
7
+
8
+ static int N ;
9
+ static String [] bin_nums ;
10
+ static Trie trie = new Trie ();
11
+
12
+ public static void main (String [] args ) throws Exception {
13
+ System .setIn (new FileInputStream ("src/String/P13505/input.txt" ));
14
+ BufferedReader br = new BufferedReader (new InputStreamReader (System .in ));
15
+ N = Integer .parseInt (br .readLine ());
16
+ StringTokenizer st = new StringTokenizer (br .readLine ());
17
+
18
+ bin_nums = new String [N ];
19
+ for (int i = 0 ; i < N ; i ++) {
20
+ bin_nums [i ] = toBinaryStr (Integer .parseInt (st .nextToken ()));
21
+ trie .insert (bin_nums [i ]);
22
+ }
23
+
24
+ int max = Integer .MIN_VALUE ;
25
+ for (int i = 0 ; i < N ; i ++) {
26
+ max = Math .max (max , trie .findMaxXOR (bin_nums [i ]));
27
+ }
28
+ System .out .println (max );
29
+ }
30
+
31
+ private static String toBinaryStr (int num ) {
32
+ StringBuilder sb = new StringBuilder ();
33
+ for (int i = 30 ; i >= 0 ; i --)
34
+ sb .append (((1 << i ) & num ) > 0 ? '1' : '0' );
35
+ return sb .toString ();
36
+ }
37
+ }
38
+
39
+ class Trie {
40
+ Node root = new Node ();
41
+
42
+ void insert (String s ) {
43
+ Node current = root ;
44
+ for (int i = 0 ; i < s .length (); i ++) {
45
+ int n = s .charAt (i ) == '0' ? 0 : 1 ;
46
+ if (current .next [n ] == null )
47
+ current .next [n ] = new Node ();
48
+ current = current .next [n ];
49
+ }
50
+ }
51
+
52
+ int findMaxXOR (String s ) {
53
+ StringBuilder sb = new StringBuilder ();
54
+ Node current = root ;
55
+ for (int i = 0 ; i < s .length (); i ++) {
56
+ int n = s .charAt (i ) == '0' ? 0 : 1 ;
57
+ int opposite = n ^ 1 ;
58
+ if (current .next [opposite ] != null ) {
59
+ sb .append ('1' );
60
+ current = current .next [opposite ];
61
+ } else {
62
+ sb .append ('0' );
63
+ current = current .next [n ];
64
+ }
65
+
66
+ }
67
+ return Integer .parseInt (sb .toString (), 2 );
68
+ }
69
+
70
+ private static class Node {
71
+ Node [] next = new Node [2 ];
72
+ }
73
+ }
0 commit comments