QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#806296#9552. The ChariotKKT89WA 11ms10616kbPython31.3kb2024-12-09 03:38:362024-12-09 03:38:36

Judging History

你现在查看的是最新测评结果

  • [2024-12-09 03:38:36]
  • 评测
  • 测评结果:WA
  • 用时:11ms
  • 内存:10616kb
  • [2024-12-09 03:38:36]
  • 提交

answer

def calc(D, A, B, C, X, Y):
    if D <= X:
        return A
    elif D <= X + Y:
        return A + B * (D - X)
    else:
        return A + B * Y + C * (D - X - Y)


for q in range(int(input())):
    A, B, C, X, Y, D = map(int, input().split())
    # 1台だけ使う場合
    base = calc(D, A, B, C, X, Y)
    res = base
    # ABを出来るだけ使う場合
    res = min(res, D // (X + Y) * (A + B * Y) + calc(D % (X + Y), A, B, C, X, Y))
    # Aを使ってお得になる場合
    c_rem = max(0, D - X - Y)
    b_rem = max(0, D - X)
    res_A = base
    if C * X > A:
        res_A -= (C * X - A) * (c_rem // X)
        c_rem %= X
    if c_rem < X and C * c_rem + B * min(X - c_rem, b_rem) > A:
        res_A -= C * c_rem + B * min(X - c_rem, b_rem) - A
        b_rem -= X - c_rem
        b_rem = max(0, b_rem)
        c_rem = 0
    if c_rem == 0:
        if B * X > A:
            res_A -= (B * X - A) * (b_rem // X)
            b_rem %= X
        if b_rem < X and B * b_rem > A:
            res_A -= B * b_rem - A
    res = min(res, res_A)
    # ABを使ってお得になる場合
    c_rem = max(0, D - X - Y)
    b_rem = Y
    res_AB = base
    if C * (X + Y) > A + B * Y:
        res_AB -= (C * (X + Y) - A - B * Y) * (c_rem // (X + Y))
        c_rem %= X + Y
    res = min(res, res_AB)
    # output
    print(res)

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Wrong Answer
time: 11ms
memory: 10616kb

input:

5
160 27 41 3 12 3
160 27 41 3 12 4
160 27 41 3 12 99
1 999 999 1 99 999
999 999 1 1 99 9999999999999999

output:

160
187
3226
-896203
10000000000099799

result:

wrong answer 4th lines differ - expected: '999', found: '-896203'