Submission #46169169


Source Code Expand

Copy
from collections import defaultdict
def ope_number_digit(N,K,P):
# NKP
N -= get_number_digit(N,K) * pow(10,K-1)
N += P * pow(10,K-1)
return N
def get_number_digit(N,K):
# NK
return N // pow(10,K-1) - N // pow(10,K) * 10
N,K,P = map(int, input().split())
C_list = list()
A_list = list()
for i in range(N):
line = [int(e) for e in input().split()]
C = line[0]
A = line[1:]
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
from collections import defaultdict

def ope_number_digit(N,K,P):
    # 整数Nの左からK桁目をPに書き換える
    N -= get_number_digit(N,K) * pow(10,K-1)
    N += P * pow(10,K-1)
    return N

def get_number_digit(N,K):
    # 整数Nの左からK桁目を得る
    return N // pow(10,K-1) - N // pow(10,K) * 10

N,K,P = map(int, input().split())

C_list = list()
A_list = list()

for i in range(N):
    line = [int(e) for e in input().split()]
    C = line[0]
    A = line[1:]
    C_list.append(C)
    A_list.append(A[::-1])

dp = defaultdict(int)
dp[0] = 0
valid_keys = {0}

for i in range(N):
    C = C_list[i]
    A = A_list[i]

    new_keys = set()
    new_val = defaultdict(int)  # 複数回使用とならないように更新値の一時置きするdict

    for key in valid_keys:
        # 当該開発案を実行したときのパラメータパターンを算出
        parameter = key

        for j in range(K):
            digit_j = get_number_digit(parameter,K-j)
            
            if digit_j + A[j] >= P:
                parameter = ope_number_digit(parameter,K-j,P)
            else:
                parameter = ope_number_digit(parameter,K-j,digit_j + A[j])

        # 新規のパラメータパターンなら探索候補に追加するために確保
        if parameter not in valid_keys:
            new_keys.add(parameter)

        # 当該パラメータパターンの最安コストを更新
        if new_val[parameter] == 0:
            new_val[parameter] = C + dp[key]
        else:
            new_val[parameter] = min(C + dp[key],new_val[parameter])
    
    new_val[0] = 0

    # 確保した新規のパラメータパターンを探索候補に追加
    valid_keys |= new_keys
    # 更新値を反映する
    for k,v in new_val.items():
        if dp[k] == 0:
            dp[k] = v
        else:    
            dp[k] = min(dp[k],v)

key = 0
for i in range(K):
    key *= 10
    key += P

if dp[key] == 0:
    print(-1)
else:
    print(dp[key])

Submission Info

Submission Time
Task E - Product Development
User tonomotohide
Language Python (PyPy 3.10-v7.3.12)
Score 475
Code Size 2083 Byte
Status AC
Exec Time 242 ms
Memory 85496 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 475 / 475
Status
AC × 2
AC × 46
Set Name Test Cases
Sample example_00.txt, example_01.txt
All example_00.txt, example_01.txt, test_00.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt
Case Name Status Exec Time Memory
example_00.txt AC 67 ms 76956 KB
example_01.txt AC 68 ms 77024 KB
test_00.txt AC 76 ms 82080 KB
test_01.txt AC 88 ms 83712 KB
test_02.txt AC 107 ms 83648 KB
test_03.txt AC 71 ms 77156 KB
test_04.txt AC 67 ms 76852 KB
test_05.txt AC 69 ms 76584 KB
test_06.txt AC 69 ms 77004 KB
test_07.txt AC 126 ms 84628 KB
test_08.txt AC 93 ms 83900 KB
test_09.txt AC 94 ms 83952 KB
test_10.txt AC 131 ms 84440 KB
test_11.txt AC 205 ms 85056 KB
test_12.txt AC 174 ms 84220 KB
test_13.txt AC 162 ms 84396 KB
test_14.txt AC 72 ms 80876 KB
test_15.txt AC 70 ms 76804 KB
test_16.txt AC 70 ms 77012 KB
test_17.txt AC 67 ms 76852 KB
test_18.txt AC 69 ms 76980 KB
test_19.txt AC 88 ms 83620 KB
test_20.txt AC 91 ms 83248 KB
test_21.txt AC 68 ms 76872 KB
test_22.txt AC 67 ms 76720 KB
test_23.txt AC 103 ms 83604 KB
test_24.txt AC 80 ms 83120 KB
test_25.txt AC 86 ms 83880 KB
test_26.txt AC 101 ms 83880 KB
test_27.txt AC 95 ms 83752 KB
test_28.txt AC 97 ms 84044 KB
test_29.txt AC 103 ms 83756 KB
test_30.txt AC 118 ms 83568 KB
test_31.txt AC 115 ms 83284 KB
test_32.txt AC 110 ms 83776 KB
test_33.txt AC 115 ms 83320 KB
test_34.txt AC 105 ms 83692 KB
test_35.txt AC 112 ms 83652 KB
test_36.txt AC 112 ms 84036 KB
test_37.txt AC 230 ms 85008 KB
test_38.txt AC 241 ms 85336 KB
test_39.txt AC 230 ms 84848 KB
test_40.txt AC 231 ms 85064 KB
test_41.txt AC 242 ms 84420 KB
test_42.txt AC 242 ms 85372 KB
test_43.txt AC 218 ms 85496 KB


2025-04-14 (Mon)
23:24:02 +00:00