結果
| 問題 |
No.130 XOR Minimax
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-01-17 16:48:56 |
| 言語 | Python2 (2.7.18) |
| 結果 |
AC
|
| 実行時間 | 1,012 ms / 5,000 ms |
| コード長 | 999 bytes |
| コンパイル時間 | 773 ms |
| コンパイル使用メモリ | 7,072 KB |
| 実行使用メモリ | 35,556 KB |
| 最終ジャッジ日時 | 2024-09-12 22:33:56 |
| 合計ジャッジ時間 | 11,707 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 21 |
ソースコード
#!/usr/bin/env python
#coding:utf8
def read():
N = input()
return map(int, raw_input().split())
def rec(bit, vList):
if bit == -1:
return (0, 0)
zeroList = []
oneList = []
for v in vList:
if v & (1 << bit):
oneList.append(v)
else:
zeroList.append(v)
if zeroList and oneList:
(x1, val1) = rec(bit - 1, oneList)
(x2, val2) = rec(bit - 1, zeroList)
if val1 < val2:
return (x1 , val1 + (1 << bit))
else:
return (x2 + (1 << bit), val2 + (1 << bit))
elif not zeroList and oneList:
(x, val) = rec(bit - 1, oneList)
return (x + (1 << bit), val)
elif zeroList and not oneList:
(x, val) = rec(bit - 1, zeroList)
return (x, val)
else:
assert False
def work(vList):
(x, val) = rec(32, vList)
print val
if __name__ == "__main__":
work(read())