結果
| 問題 |
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()
tamato