Submission #53489045


Source Code Expand

N, K = map(int, input().split())
D = list(map(int, input().split()))


is_use = set([i for i in range(10)]) ^ set(D)
is_use = list(is_use)

INF = int(str(max(is_use))*len(str(N)))
if INF < N:
    INF *= 10
    INF += max(is_use)

# dp[S] := 集合 S (1~9) で作れる N 以上の最小値
dp = [INF]*(1 << 10)

for S in range(1 << 10):
    for i in range(10):
        len_ = len(str(dp[S]))
        for bit in range(1 << len_):
            num = list(str(dp[S]))
            for j in range(len_): 
                if (bit >> j) & 1:
                    num[j] = str(i)
            num = int("".join(num))
            if num >= N:
                dp[S | (1 << i)] = min(dp[S | (1 << i)], num)

ans = INF
use_bin = sum([(1 << i) for i in is_use])
for i in range(1 << 10):
    ans = min(ans, dp[i & use_bin])

print(ans)

Submission Info

Submission Time
Task C - Iroha's Obsession
User ryusuke_h
Language Python (PyPy 3.10-v7.3.12)
Score 300
Code Size 850 Byte
Status AC
Exec Time 125 ms
Memory 83004 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 300 / 300
Status AC
AC × 10
Set Name Test Cases
Sample
All subtask0_sample_01.txt, subtask0_sample_02.txt, subtask1_X_01.txt, subtask1_X_02.txt, subtask1_X_03.txt, subtask1_X_04.txt, subtask1_X_05.txt, subtask1_X_06.txt, subtask1_X_07.txt, subtask1_X_08.txt
Case Name Status Exec Time Memory
subtask0_sample_01.txt AC 98 ms 82876 KiB
subtask0_sample_02.txt AC 95 ms 82848 KiB
subtask1_X_01.txt AC 99 ms 82820 KiB
subtask1_X_02.txt AC 125 ms 82816 KiB
subtask1_X_03.txt AC 98 ms 82764 KiB
subtask1_X_04.txt AC 81 ms 82728 KiB
subtask1_X_05.txt AC 75 ms 81648 KiB
subtask1_X_06.txt AC 124 ms 83004 KiB
subtask1_X_07.txt AC 90 ms 82980 KiB
subtask1_X_08.txt AC 95 ms 82648 KiB