結果
問題 |
No.5001 排他的論理和でランニング
|
ユーザー |
|
提出日時 | 2018-03-17 14:15:52 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 152 ms / 1,500 ms |
コード長 | 932 bytes |
コンパイル時間 | 64 ms |
実行使用メモリ | 24,492 KB |
スコア | 34,416,403 |
最終ジャッジ日時 | 2020-03-12 20:06:57 |
ジャッジサーバーID (参考情報) |
judge6 / |
純コード判定しない問題か言語 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 50 |
ソースコード
from collections import defaultdict def main(): N, M = map(int, input().split()) A = set(map(int, input().split())) if M == 1: print(max(N)) return if N == M: print(*A, sep=' ') return num = defaultdict(list) for i in A: l = len(f'{i:b}') - 1 num[l].append(i) rm = set() n = N - M ans = [] for i, j in sorted(num.items(), reverse=1): while len(j) > 1: rm.add(num[i].pop(-1)) if len(rm) == n: for k in num.values(): ans.extend(k) print(*ans, sep=' ') return break for i, j in sorted(num.items()): while len(j) > 0: rm.add(num[i].pop(-1)) if len(rm) == n: for k in num.values(): ans.extend(k) print(*ans, sep=' ') return main()