結果
問題 | No.968 引き算をして門松列(その3) |
ユーザー | tamato |
提出日時 | 2020-01-13 22:07:48 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 156 ms / 2,000 ms |
コード長 | 2,067 bytes |
コンパイル時間 | 319 ms |
コンパイル使用メモリ | 82,524 KB |
実行使用メモリ | 77,572 KB |
最終ジャッジ日時 | 2024-12-23 01:04:47 |
合計ジャッジ時間 | 2,313 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 10 |
ソースコード
def main(): import sys input = sys.stdin.readline T = int(input()) for _ in range(T): A, B, C, x, y, z = map(int, input().split()) if A == C == 1: print(-1) continue # b max a, b, c = A, B, C ans1 = 0 if a >= b: d = a - (b-1) ans1 += z * d a -= d c -= d if c >= b: d = c - (b-1) ans1 += z * d a -= d c -= d if a == c: ans11 = ans1 a1, b1, c1 = a, b, c ans11 += x a1 -= 1 b1 -= 1 if b1 == c1: ans11 += z a1 -= 1 c1 -= 1 if a1 <= 0 or b1 <= 0 or c1 <= 0: ans11 = 10**30 ans12 = ans1 a2, b2, c2 = a, b, c ans12 += y c2 -= 1 b2 -= 1 if b2 == a2: ans12 += z a2 -= 1 c2 -= 1 if a2 <= 0 or b2 <= 0 or c2 <= 0: ans12 = 10 ** 30 ans1 = min(ans11, ans12) else: if a <= 0 or b <= 0 or c <= 0: ans1 = 10**30 # b min a, b, c = A, B, C ans2 = 0 if a <= b: d = b - (a-1) ans2 += y * d b -= d c -= d if c <= b: d = b - (c-1) ans2 += x * d a -= d b -= d if a == c: if x < y: ans2 += x a -= 1 b -= 1 else: ans2 += y b -= 1 c -= 1 if a <= 0 or b <= 0 or c <= 0: ans2 = 10**30 else: if a <= 0 or b <= 0 or c <= 0: ans2 = 10**30 ans = min(ans1, ans2) if ans != 10**30: print(ans) else: print(-1) #print(ans1, ans2) if __name__ == '__main__': main()