結果

問題 No.968 引き算をして門松列(その3)
ユーザー tamatotamato
提出日時 2020-01-13 22:07:48
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 166 ms / 2,000 ms
コード長 2,067 bytes
コンパイル時間 188 ms
コンパイル使用メモリ 82,176 KB
実行使用メモリ 77,396 KB
最終ジャッジ日時 2024-06-02 06:44:20
合計ジャッジ時間 2,232 ms
ジャッジサーバーID
(参考情報)
judge2 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 39 ms
52,224 KB
testcase_01 AC 39 ms
52,352 KB
testcase_02 AC 39 ms
52,224 KB
testcase_03 AC 115 ms
76,564 KB
testcase_04 AC 118 ms
76,704 KB
testcase_05 AC 115 ms
76,568 KB
testcase_06 AC 122 ms
76,420 KB
testcase_07 AC 114 ms
76,804 KB
testcase_08 AC 148 ms
77,396 KB
testcase_09 AC 149 ms
77,232 KB
testcase_10 AC 144 ms
77,044 KB
testcase_11 AC 166 ms
77,036 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