結果
問題 | No.1043 直列大学 |
ユーザー | wattaihei |
提出日時 | 2020-05-01 22:20:29 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 191 ms / 2,000 ms |
コード長 | 732 bytes |
コンパイル時間 | 326 ms |
コンパイル使用メモリ | 82,176 KB |
実行使用メモリ | 79,068 KB |
最終ジャッジ日時 | 2024-12-22 19:32:54 |
合計ジャッジ時間 | 4,037 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 28 |
ソースコード
import sys input = sys.stdin.readline from bisect import bisect_left mod = 10**9+7 N, M = map(int, input().split()) V = list(map(int, input().split())) R = list(map(int, input().split())) A, B = map(int, input().split()) Lv = sum(V) dp1 = [0]*(Lv+1) dp1[0] = 1 for v in V: for t in reversed(range(Lv+1-v)): dp1[t+v] = (dp1[t+v] + dp1[t]) % mod Lr = sum(R) dp2 = [0]*(Lr+1) dp2[0] = 1 for r in R: for t in reversed(range(Lr+1-r)): dp2[t+r] = (dp2[t+r] + dp2[t]) % mod dp3 = [0]*(Lv+1) dp3[0] = dp1[0] for n in range(Lv): dp3[n+1] = (dp3[n] + dp1[n+1]) % mod ans = 0 for c in range(1, Lr+1): score = dp2[c] * (dp3[min(c*B, Lv)] - dp3[min(c*A-1, Lv)]) % mod ans = (ans + score) % mod print(ans)