結果

問題 No.3068 Speedrun (Hard)
ユーザー D M
提出日時 2025-04-03 09:07:10
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,693 bytes
コンパイル時間 497 ms
コンパイル使用メモリ 81,968 KB
実行使用メモリ 66,764 KB
最終ジャッジ日時 2025-04-03 09:07:20
合計ジャッジ時間 10,149 ms
ジャッジサーバーID
(参考情報)
judge4 / judge5
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 25 WA * 7
権限があれば一括ダウンロードができます

ソースコード

diff #

import sys

input_data = sys.stdin.read().strip().split()
if not input_data:
    sys.exit(0)
A, B, C, D, N, P, Q, R, S, T = map(int, input_data)

# 変数の意味:
# A: 難易度1の問題総数,P: 解くのにかかる分数
# B, Q: 難易度1.5
# C, R: 難易度2
# D, S: 難易度2.5
# N: 合計解いた問題数,T: 総使用時間

found = False

for n_a in range(0, min(A, N) + 1):
    for n_b in range(0, min(B, N - n_a) + 1):
        rem = N - n_a - n_b  # 残りを難易度2と2.5から解く
        # 残りの問題からかかる時間は, n_c*R+(rem-n_c)*S = rem*S + n_c*(R-S)
        # よって n_c*(R-S) = T - (n_a*P+n_b*Q) - rem*S
        diff = T - (n_a * P + n_b * Q) - rem * S

        # n_cのとりうる範囲: 0 <= n_c <= C かつ n_d = rem - n_c <= D
        # つまり n_c >= max(0, rem-D) と n_c <= min(C, rem)
        low_nc = max(0, rem - D)
        high_nc = min(C, rem)

        if R - S == 0:
            # この場合,左辺は常に0なので diff==0 でなければならない
            if diff != 0:
                continue
            # diff==0なら,low_nc <= n_c <= high_nc の任意の n_c でよい
            n_c = low_nc  # とりあえずlow_ncを選ぶ
            n_d = rem - n_c
            print(n_a, n_b, n_c, n_d)
            sys.exit(0)
        else:
            if diff % (R - S) != 0:
                continue
            n_c = diff // (R - S)
            if low_nc <= n_c <= high_nc:
                n_d = rem - n_c
                # n_dが条件内かどうか(n_d<=D は自動的に満たすはず)
                if 0 <= n_d <= D:
                    print(n_a, n_b, n_c, n_d)
                    sys.exit(0)
0