提交时间:2022-08-18 10:59:19
运行 ID: 55420
#include<bits/stdc++.h> using namespace std; template<typename T>void in(T &a) { T ans=0; char c=getchar(); for(;c<'0'||c>'9';c=getchar()); for(;c>='0'&&c<='9';c=getchar())ans=ans*10+c-'0'; a=ans; } unsigned int n,m,k,ans,a[505],f[2][455][75]; int main(){ register int i,j,l,c; f[0][0][1]=1,in(n),in(m),in(k); for(i=1;i<=n;i++)in(a[i]); for(i=0;i<m;i++){ memset(f[(i+1)&1],0,sizeof(f[(i+1)&1])); for(j=0;j<=k;j++){ for(l=1;l<=n;l++){ for(c=l;c<=n;c++){ if(j+a[c]<=k){ f[(i+1)&1][j+a[c]][c]+=f[i&1][j][l]; if(f[(i+1)&1][j+a[c]][c]>=1000000007)f[(i+1)&1][j+a[c]][c]-=1000000007; } } } } } for(i=0;i<=k;i++)for(j=1;j<=n;j++)ans=(ans+f[m&1][i][j])%1000000007; return printf("%d\n",ans),0; }