Submission #1200221

#TimeUsernameProblemLanguageResultExecution timeMemory
1200221brover29Magneti (COCI21_magneti)C++17
0 / 110
230 ms237088 KiB
#include <bits/stdc++.h> //qwerty47924692 using namespace std; using ll = int; const ll N=1e4+29; const ll mod=1e9+7; const string br="617283"; #define sz(a)(ll)a.size() #define f first #define s second ll n,l,r[N],dp[2][N][55],c[N+100][N+100]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>l; for(ll i=1;i<=n;i++){ cin>>r[i]; } c[0][0]=1; for(ll i=1;i<=n+l;i++){ c[i][0]=1; for(ll j=1;j<=i;j++){ c[i][j]=c[i-1][j]+c[i-1][j-1]; c[i][j]%=mod; } } dp[0][0][0]=1; ll x=0; for(ll i=1;i<=n;i++){ x^=1; dp[x][0][0]=0; ll R=r[i]; for(ll j=1;j<=i;j++){ for(ll k=1;k<=l;k++){ dp[x][j][k]=dp[!x][j-1][k-1]; if(k>=R)dp[x][j][k]+=(dp[!x][j][k-R]*1ll*2*j)%mod; dp[x][j][k]%=mod; if(k>=2*R-1)dp[x][j][k]+=(dp[!x][j+1][k-2*R+1]*1ll*j*(j+1))%mod; dp[x][j][k]%=mod; } } } ll ans=0; for(ll d=1;d<=l;d++){ ans+=(dp[x][1][d]*1ll*c[l-d+n][n])%mod; ans%=mod; }cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...