結果

問題 No.5001 排他的論理和でランニング
ユーザー GrayCoderGrayCoder
提出日時 2018-03-17 14:44:30
言語 Python3
(3.12.2 + numpy 1.26.4 + scipy 1.12.0)
結果
AC  
実行時間 678 ms / 1,500 ms
コード長 1,167 bytes
コンパイル時間 64 ms
実行使用メモリ 24,576 KB
スコア 30,714,227
最終ジャッジ日時 2020-03-12 20:09:42
ジャッジサーバーID
(参考情報)
judge10 /
純コード判定しない問題か言語
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 412 ms
24,536 KB
testcase_01 AC 54 ms
10,536 KB
testcase_02 AC 80 ms
13,192 KB
testcase_03 AC 255 ms
15,232 KB
testcase_04 AC 573 ms
24,244 KB
testcase_05 AC 150 ms
14,216 KB
testcase_06 AC 241 ms
16,980 KB
testcase_07 AC 384 ms
17,776 KB
testcase_08 AC 410 ms
19,120 KB
testcase_09 AC 21 ms
8,428 KB
testcase_10 AC 129 ms
13,432 KB
testcase_11 AC 188 ms
14,204 KB
testcase_12 AC 158 ms
14,592 KB
testcase_13 AC 341 ms
23,180 KB
testcase_14 AC 308 ms
16,264 KB
testcase_15 AC 163 ms
14,244 KB
testcase_16 AC 71 ms
10,696 KB
testcase_17 AC 87 ms
13,236 KB
testcase_18 AC 244 ms
15,648 KB
testcase_19 AC 175 ms
15,392 KB
testcase_20 AC 141 ms
13,444 KB
testcase_21 AC 124 ms
13,264 KB
testcase_22 AC 59 ms
10,212 KB
testcase_23 AC 45 ms
9,812 KB
testcase_24 AC 219 ms
14,972 KB
testcase_25 AC 394 ms
23,408 KB
testcase_26 AC 319 ms
18,104 KB
testcase_27 AC 213 ms
15,648 KB
testcase_28 AC 397 ms
17,240 KB
testcase_29 AC 419 ms
18,976 KB
testcase_30 AC 52 ms
10,192 KB
testcase_31 AC 347 ms
16,524 KB
testcase_32 AC 118 ms
13,276 KB
testcase_33 AC 306 ms
23,612 KB
testcase_34 AC 395 ms
24,264 KB
testcase_35 AC 296 ms
17,416 KB
testcase_36 AC 554 ms
23,816 KB
testcase_37 AC 425 ms
17,752 KB
testcase_38 AC 152 ms
13,360 KB
testcase_39 AC 136 ms
13,752 KB
testcase_40 AC 270 ms
15,716 KB
testcase_41 AC 52 ms
10,064 KB
testcase_42 AC 256 ms
14,496 KB
testcase_43 AC 219 ms
15,356 KB
testcase_44 AC 480 ms
23,132 KB
testcase_45 AC 334 ms
24,072 KB
testcase_46 AC 678 ms
24,576 KB
testcase_47 AC 203 ms
14,164 KB
testcase_48 AC 116 ms
13,540 KB
testcase_49 AC 345 ms
17,724 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

from collections import defaultdict
from itertools import chain

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 = digits(A)
    rm = set()
    n = N - M
    ans = []
    while len(rm) < n:
        for i, j in sorted(num.items(), reverse=1):
            if not len(j) % 2:
                rm.add(num[i].pop(0))
                if len(rm) == n:
                    for k in num.values():
                        ans.extend(k)
                    print(*ans, sep=' ')
                    return
                break
        else:
            break
        num = digits(list(chain.from_iterable(num.values())))

    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

def digits(a):
    num = defaultdict(list)
    for i in a:
        l = len(f'{i:b}') - 1
        num[l].append(i)
    return num

main()
0