Official
		
			
				B - XOR Matching 2 Editorial
			
			by 
		
		
		
			
		
		
			
	
			
				B - XOR Matching 2 Editorial
			
			by  camypaper
camypaper
			
		
		
		\(\oplus\) をビットごとの排他的論理和を表す記号とします。
\(x\) を決めたとき、\(a_i \oplus b_i = x\) となるように \(b\) を並び替えることができるかどうかは \(c_i = a_i \oplus x\) として、\(b\) と \(c\) が並び替えて一致することと同値です。これはソートなどにより \(O(N \log N)\) で判定可能です。
\(x\) の候補として \(a_1 \oplus b_1, a_1 \oplus b_2, \ldots, a_1 \oplus b_N\) の \(N\) 通りを試せば十分です。
全体として時間計算量 \(O(N^{2} \log N)\) で全てのよい数を列挙可能で十分高速です。
				posted:
				
				
				last update:
				
			
