結果
| 問題 |
No.3325 陰陽師
|
| コンテスト | |
| ユーザー |
高橋ゆに
|
| 提出日時 | 2025-07-12 14:52:16 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,305 bytes |
| コンパイル時間 | 395 ms |
| コンパイル使用メモリ | 82,644 KB |
| 実行使用メモリ | 67,604 KB |
| 最終ジャッジ日時 | 2025-11-01 02:52:46 |
| 合計ジャッジ時間 | 5,755 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | RE * 30 |
ソースコード
PROBLEM_TOTAL = int(input())
SOLVE_TIMES = list(map(int, input().split()))
TIME_LIMITS = list(map(int, input().split()))
SOLVE_TIMES.sort(reverse = True)
TIME_LIMITS.sort(reverse = True)
SKIPPED = 1
BEST_TIMES =[[-1] * PROBLEM_TOTAL for is_skipped in (not SKIPPED, SKIPPED)]
def search_best_times(skipped):
pre_problem_i = -1
for music_i, time_limit in enumerate(TIME_LIMITS):
if skipped and music_i == 0:
continue
for problem_i in range(pre_problem_i + 1, PROBLEM_TOTAL):
solve_time = SOLVE_TIMES[problem_i]
if solve_time < time_limit:
BEST_TIMES[skipped][music_i] = solve_time
pre_problem_i = problem_i
break
search_best_times(not SKIPPED)
search_best_times(SKIPPED)
def main():
dp = [0, TIME_LIMITS[0]]
for music_i, time_limit in enumerate(TIME_LIMITS):
if BEST_TIMES[SKIPPED][music_i] > -1:
dp[SKIPPED] += BEST_TIMES[SKIPPED][music_i]
if music_i > 0:
dp[SKIPPED] = max(dp[SKIPPED], dp[not SKIPPED] + time_limit)
if BEST_TIMES[not SKIPPED][music_i] > -1:
dp[not SKIPPED] += BEST_TIMES[not SKIPPED][music_i]
ans = dp[SKIPPED]
print(ans)
if __name__ == "__main__":
main()
高橋ゆに