Submission #4220038


Source Code Expand

n, k = map(int, input().split())
a = list(map(int, input().split()))
dig=[0 for i in range(40)] # 10^12 < 2^40

for i in range(n) :
    temp = a[i] 
    for j in range(40) :
        if temp <= 0 :
            break
        if temp % 2 == 1 :
            dig[j] += 1
        temp = temp // 2

bin = 1 << 39 # 2^39
sum0 = 0
i = 39
# leading_zero of k
while(bin > k) :
    sum0 += bin * dig[i]
    bin //= 2
    i += -1

memo={}

def solve (k, bin, i) :
    if i < 0 :
        return 0, 0
    if (k,bin) in memo:
        return memo[(k,bin)]
    if k >= bin :  # this digit can be 1 or 0
        sum1, ans1 = solve(k-bin, bin//2, i-1)
        sum1 += bin * (n- dig[i]) 
        sum0, ans0 = solve(bin-1,bin//2, i-1)
        sum0 += bin * dig[i]
        if sum1 >= sum0 :
            sum = sum1
            ans = ans1 + bin
        else :
            sum = sum0
            ans = ans0
    else :         # this digit must be 0
        sum, ans = solve(k,bin//2, i-1)
        sum += bin * dig[i]
    memo[(k,bin)] = sum, ans
    return sum, ans

sum, ans = solve(k, bin, i)

print (sum+sum0)
#print(sum, sum0)
#print (ans)


Submission Info

Submission Time
Task D - XXOR
User Cummin
Language Python (3.4.3)
Score 400
Code Size 1173 Byte
Status AC
Exec Time 1291 ms
Memory 15144 KiB

Judge Result

Set Name All Sample
Score / Max Score 400 / 400 0 / 0
Status
AC × 25
AC × 3
Set Name Test Cases
All 0_normal_1, 0_normal_2, 0_normal_3, 0_normal_4, 0_normal_5, 0_normal_6, 0_normal_7, 0_normal_8, 0_normal_9, 1_max_1, 1_max_2, 1_max_3, 1_max_4, 1_max_5, 1_max_6, 1_max_7, 1_max_8, 2_beki_1, 2_beki_2, 3_hand_1, 3_hand_2, 3_hand_3, sample_01, sample_02, sample_03
Sample sample_01, sample_02, sample_03
Case Name Status Exec Time Memory
0_normal_1 AC 699 ms 9724 KiB
0_normal_2 AC 104 ms 3956 KiB
0_normal_3 AC 809 ms 11128 KiB
0_normal_4 AC 528 ms 7516 KiB
0_normal_5 AC 593 ms 9332 KiB
0_normal_6 AC 835 ms 11648 KiB
0_normal_7 AC 937 ms 11916 KiB
0_normal_8 AC 889 ms 11608 KiB
0_normal_9 AC 546 ms 8828 KiB
1_max_1 AC 1291 ms 14840 KiB
1_max_2 AC 1103 ms 15144 KiB
1_max_3 AC 1085 ms 14384 KiB
1_max_4 AC 1076 ms 14384 KiB
1_max_5 AC 1031 ms 14384 KiB
1_max_6 AC 1067 ms 14384 KiB
1_max_7 AC 1211 ms 14008 KiB
1_max_8 AC 1114 ms 14112 KiB
2_beki_1 AC 1034 ms 12372 KiB
2_beki_2 AC 837 ms 11804 KiB
3_hand_1 AC 1135 ms 14620 KiB
3_hand_2 AC 480 ms 13812 KiB
3_hand_3 AC 1075 ms 14208 KiB
sample_01 AC 18 ms 3064 KiB
sample_02 AC 18 ms 3064 KiB
sample_03 AC 18 ms 3064 KiB