結果

問題 No.968 引き算をして門松列(その3)
ユーザー 👑 tamatotamato
提出日時 2020-01-13 22:07:48
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 192 ms / 2,000 ms
コード長 2,067 bytes
コンパイル時間 259 ms
コンパイル使用メモリ 87,104 KB
実行使用メモリ 79,012 KB
最終ジャッジ日時 2023-08-24 16:53:10
合計ジャッジ時間 2,653 ms
ジャッジサーバーID
(参考情報)
judge12 / judge15
このコードへのチャレンジ(β)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 68 ms
71,276 KB
testcase_01 AC 69 ms
71,056 KB
testcase_02 AC 69 ms
71,308 KB
testcase_03 AC 140 ms
77,532 KB
testcase_04 AC 142 ms
78,104 KB
testcase_05 AC 144 ms
77,816 KB
testcase_06 AC 145 ms
78,540 KB
testcase_07 AC 141 ms
77,876 KB
testcase_08 AC 173 ms
78,116 KB
testcase_09 AC 176 ms
78,268 KB
testcase_10 AC 174 ms
78,968 KB
testcase_11 AC 192 ms
79,012 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

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()
0