結果
問題 |
No.3046 White Tiger vs Monster
|
ユーザー |
![]() |
提出日時 | 2025-06-12 20:48:14 |
言語 | PyPy3 (7.3.15) |
結果 |
RE
|
実行時間 | - |
コード長 | 620 bytes |
コンパイル時間 | 211 ms |
コンパイル使用メモリ | 82,008 KB |
実行使用メモリ | 66,964 KB |
最終ジャッジ日時 | 2025-06-12 20:50:30 |
合計ジャッジ時間 | 9,479 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 3 |
other | RE * 80 |
ソースコード
MOD = 10**9 + 7 K = int(input()) N = int(input()) x = list(map(int, input().split())) # Since x is already sorted as per the problem statement dp = [0] * (K + 1) dp[0] = 1 for k in range(1, K + 1): # Find the rightmost index where x[i] <= k using bisect_right left, right = 0, N while left < right: mid = (left + right) // 2 if x[mid] <= k: left = mid + 1 else: right = mid idx = left # Iterate through all x_i <= k for i in range(idx): xi = x[i] if k - xi >= 0: dp[k] = (dp[k] + dp[k - xi]) % MOD print(dp[K] % MOD)