結果
問題 |
No.1818 6 Operations
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:21:49 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,093 bytes |
コンパイル時間 | 211 ms |
コンパイル使用メモリ | 81,652 KB |
実行使用メモリ | 82,676 KB |
最終ジャッジ日時 | 2025-06-12 20:22:15 |
合計ジャッジ時間 | 16,182 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | WA * 3 |
other | WA * 26 TLE * 1 -- * 3 |
ソースコード
def main(): import sys input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 M = int(input[ptr]) ptr +=1 A = list(map(int, input[ptr:ptr+N])) ptr +=N B = list(map(int, input[ptr:ptr+M])) ptr +=M prefixA = [0]*(N+1) for i in range(1, N+1): prefixA[i] = prefixA[i-1] + A[i-1] prefixB = [0]*(M+1) for j in range(1, M+1): prefixB[j] = prefixB[j-1] + B[j-1] INF = float('inf') dp = [ [INF]*(M+1) for _ in range(N+1) ] dp[0][0] = 0 for i in range(1, N+1): for j in range(1, M+1): if prefixB[j] > prefixA[i]: continue for k in range(i): if prefixA[i] - prefixA[k] != prefixB[j] - prefixB[j-1]: continue merge_operations = i - k - 1 value_diff = abs( (prefixA[i] - prefixA[k]) - B[j-1] ) if dp[k][j-1] != INF: dp[i][j] = min(dp[i][j], dp[k][j-1] + merge_operations + value_diff) print(dp[N][M]) if __name__ == "__main__": main()