結果
| 問題 |
No.3068 Speedrun (Hard)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
ソースコード
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)