結果
問題 |
No.968 引き算をして門松列(その3)
|
ユーザー |
![]() |
提出日時 | 2025-04-16 15:38:59 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 5,691 bytes |
コンパイル時間 | 208 ms |
コンパイル使用メモリ | 81,928 KB |
実行使用メモリ | 83,516 KB |
最終ジャッジ日時 | 2025-04-16 15:44:17 |
合計ジャッジ時間 | 2,525 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | WA * 10 |
ソースコード
import sys def compute_min_cost(A, B, C, X, Y, Z): min_cost = float('inf') # Case 1: b > a > c def case1(): nonlocal min_cost # Candidate 1: k1=0, k2 as small as possible k2_min = max(0, B - A - 1) k3 = k2_min + (A - B) + 1 if k3 < 0: return a = A - 0 - k3 b = B - 0 - k2_min c = C - k2_min - k3 if b > a and a > c and a >= 1 and b >= 1 and c >= 1: if k2_min >= (C - A + 1): cost = 0 * X + k2_min * Y + k3 * Z if cost < min_cost: min_cost = cost # Candidate 2: k2=0 k2 = 0 k3_min = max(0, (A - B) + 1 + k2) k3 = k3_min a = A - 0 - k3 b = B - 0 - k2 c = C - k2 - k3 if b > a and a > c and a >= 1 and b >= 1 and c >= 1: cost = 0 * X + 0 * Y + k3 * Z if cost < min_cost: min_cost = cost # Candidate 3: k3=0 k3 = 0 k2_min_case3 = max(0, (B - A) - 1) k2 = k2_min_case3 a = A - 0 - k3 b = B - 0 - k2 c = C - k2 - k3 if b > a and a > c and a >= 1 and b >= 1 and c >= 1: cost = 0 * X + k2 * Y + 0 * Z if cost < min_cost: min_cost = cost # Case 2: c > a > b def case2(): nonlocal min_cost # Candidate 1: k1=0, k3 as small as possible k3_min = max(0, C - A - 1) k2 = k3_min + (A - C) + 1 if k2 < 0: return a = A - 0 - k3_min c = C - 0 - k2 b = B - 0 - k2 if c > a and a > b and a >= 1 and b >= 1 and c >= 1: if k3_min >= (B - A + 1): cost = 0 * X + k2 * Y + k3_min * Z if cost < min_cost: min_cost = cost # Candidate 2: k3=0 k3 = 0 k2_min_case2 = max(0, (C - A) + 1) k2 = k2_min_case2 a = A - 0 - k3 c = C - 0 - k2 b = B - 0 - k2 if c > a and a > b and a >= 1 and b >= 1 and c >= 1: cost = 0 * X + k2 * Y + 0 * Z if cost < min_cost: min_cost = cost # Candidate 3: k2=0 k2 = 0 k3_min = max(0, (C - A) - 1) a = A - 0 - k3_min c = C - 0 - k2 b = B - 0 - k2 if c > a and a > b and a >= 1 and b >= 1 and c >= 1: cost = 0 * X + 0 * Y + k3_min * Z if cost < min_cost: min_cost = cost # Case 3: b > c > a def case3(): nonlocal min_cost # Candidate 1: k3=0, k2 as small as possible k2_min = max(0, B - C - 1) k1 = k2_min + (C - B) + 1 if k1 < 0: return c_val = C - k2_min - 0 b_val = B - k1 - k2_min a_val = A - k1 - 0 if b_val > c_val and c_val > a_val and a_val >= 1 and b_val >= 1 and c_val >= 1: if k2_min >= (A - C + 1): cost = k1 * X + k2_min * Y + 0 * Z if cost < min_cost: min_cost = cost # Candidate 2: k2=0 k2 = 0 k1_min = max(0, (B - C) - 1) k1 = k1_min c_val = C - k2 - 0 b_val = B - k1 - k2 a_val = A - k1 - 0 if b_val > c_val and c_val > a_val and a_val >= 1 and b_val >= 1 and c_val >= 1: cost = k1 * X + 0 * Y + 0 * Z if cost < min_cost: min_cost = cost # Candidate 3: k1=0 k1 = 0 k2_min_case3 = max(0, B - C - 1) c_val = C - k2_min_case3 - 0 b_val = B - k1 - k2_min_case3 a_val = A - k1 - 0 if b_val > c_val and c_val > a_val and a_val >= 1 and b_val >= 1 and c_val >= 1: cost = 0 * X + k2_min_case3 * Y + 0 * Z if cost < min_cost: min_cost = cost # Case 4: a > c > b def case4(): nonlocal min_cost # Candidate 1: k2=0, k1 as small as possible k1_min = max(0, A - C - 1) k3 = k1_min + (C - A) + 1 if k3 < 0: return a_val = A - k1_min - k3 c_val = C - 0 - k3 b_val = B - k1_min - 0 if a_val > c_val and c_val > b_val and a_val >= 1 and b_val >= 1 and c_val >= 1: if k1_min >= (B - C + 1): cost = k1_min * X + 0 * Y + k3 * Z if cost < min_cost: min_cost = cost # Candidate 2: k1=0 k1 = 0 k3_min = max(0, (C - A) + 1) a_val = A - k1 - k3_min c_val = C - 0 - k3_min b_val = B - k1 - 0 if a_val > c_val and c_val > b_val and a_val >= 1 and b_val >= 1 and c_val >= 1: cost = 0 * X + 0 * Y + k3_min * Z if cost < min_cost: min_cost = cost # Candidate 3: k3=0 k3 = 0 k1_min_case4 = max(0, A - C - 1) a_val = A - k1_min_case4 - k3 c_val = C - 0 - k3 b_val = B - k1_min_case4 - 0 if a_val > c_val and c_val > b_val and a_val >= 1 and b_val >= 1 and c_val >= 1: cost = k1_min_case4 * X + 0 * Y + 0 * Z if cost < min_cost: min_cost = cost case1() case2() case3() case4() return min_cost if min_cost != float('inf') else -1 def main(): input = sys.stdin.read().split() idx = 0 T = int(input[idx]) idx +=1 for _ in range(T): A = int(input[idx]) B = int(input[idx+1]) C = int(input[idx+2]) X = int(input[idx+3]) Y = int(input[idx+4]) Z = int(input[idx+5]) idx +=6 print(compute_min_cost(A, B, C, X, Y, Z)) if __name__ == '__main__': main()