結果
問題 |
No.1474 かさまJ
|
ユーザー |
![]() |
提出日時 | 2025-07-22 01:52:49 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 1,282 ms / 2,500 ms |
コード長 | 842 bytes |
コンパイル時間 | 489 ms |
コンパイル使用メモリ | 82,592 KB |
実行使用メモリ | 259,556 KB |
最終ジャッジ日時 | 2025-07-22 01:53:00 |
合計ジャッジ時間 | 10,039 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 17 |
ソースコード
n,mp,mq,L=map(int,input().split()) s=list(map(int,input().split())) M=10**9+7 q=[[0]*(mp+3) for i in range(n+1)] q[0][0]=1 for k in range(n): nq=[[0]*(mp+3) for i in range(n+1)] for i in range(k+1): for j in range(mp+1): l=max(L*i+L-mq,j+L-s[k]) r=min(mp,j+L-1) if l<=r: nq[i+1][l]+=q[i][j] nq[i+1][r+1]-=q[i][j] for i in range(n+1): for j in range(mp+2): nq[i][j]+=nq[i][j-1] nq[i][j]%=M for i in range(n+1): for j in range(mp+2): nq[i][j]+=q[i][j] nq[i][j]%=M q=nq N=mp+n fa=[1] for i in range(1,N+1): fa+=[fa[-1]*i%M] fb=[pow(fa[N],M-2,M)] for i in reversed(range(1,N+1)): fb+=[fb[-1]*i%M] fb.reverse() fc=lambda n,k:fa[n]*fb[k]*fb[n-k]%M if n>=k>=0 else 0 a=0 for i in range(n+1): for j in range(mp+1): a+=q[i][j]*fc(mp-j+n-1,n-1) a%=M print(a)