結果

問題 No.3681 心の沸騰石
コンテスト
ユーザー kmmtkm
提出日時 2026-09-05 14:02:55
言語 PyPy3
(8.0.0 + ACL)
コンパイル:
pypy3 -mpy_compile _filename_
実行:
pypy3 _filename_
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 1,880 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 220 ms
コンパイル使用メモリ 64,236 KB
実行使用メモリ 53,524 KB
最終ジャッジ日時 2026-10-22 13:19:43
合計ジャッジ時間 2,277 ms
ジャッジサーバーID
(参考情報)
judge2_0 / judge5_0
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 14 WA * 1
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

def main():
    r, p, q = map(int, input().split())
    a, b, c, d = map(int, input().split())

    a, b, c = sorted([a, b, c])

    # ルーマニア人最大化が目的なのでまず変えれるだけ変える
    k = min(a, r // p)
    ans = k
    a -= k
    b -= k
    c -= k
    r -= k * p

    ok = r // p > 0
    while ok:
        pa = ans
        if c == 0:
            # 全部緑コーダーから賄うしかない
            k = min(d // 3, r // (3 * q + p))
            ans += k
            d -= 3 * k
            r -= (3 * q + p) * k
            ok = False
        elif b == 0:
            # 青コーダーと緑コーダーで赤と黄を錬成しないといけない
            # まず緑コーダーを使い切って損がない
            k = min(c, d // 2, r // (2 * q + p))
            ans += k
            d -= 2 * k
            c -= k
            r -= (2 * q + p) * k

            # 青コーダーで全部賄う
            k = min(c // 3, r // (2 * q + p))
            ans += k
            c -= 3 * k
            r -= (2 * q + p) * k

            # 青コーダーの余りと緑コーダーのあまり
            if d >= 1 and c >= 2:
                k = r // (2 * q + p)
                d -= k
                c -= 2 * k
                ans += k
                r -= (2 * q + p) * k
        else:
            # 青と黄と緑で赤を錬成
            # まず緑コーダーを使い切って損がない
            k = min(b, c, d, r // (q + p))
            ans += k
            b -= k
            c -= k
            d -= k
            r -= (q + p) * k

            # 青コーダーで赤を賄う
            k = min(b, c // 2, r // (q + p))
            ans += k
            b -= k
            c -= 2 * k
            r -= (q + p) * k
        if pa == ans:
            ok = False

    print(ans)


if __name__ == "__main__":
    main()
0