結果
| 問題 |
No.1474 かさまJ
|
| コンテスト | |
| ユーザー |
sasa8uyauya
|
| 提出日時 | 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)
sasa8uyauya