Topic links
Https://icpcarchive.ecs.baylor.edu/external/68/6801.pdf
Borrow your teammates ' code.
#include <iostream> #include <cstdio> #include <cstring>unsigned long long dp[1010][1010];bool flag[ 1010][1010];char a[1010];using namespace Std;int main () {int t;cin>>t;int t=1;while (t--) {unsigned long long n,k; Cin>>n>>k;int cnt=0;for (int i=0;i<n;i++) {cin>>a[i];if (a[i]== ' 1 ') {cnt++;}} Memset (Dp,0,sizeof (DP)); memset (dp,false,sizeof (flag));DP [0][cnt]=1;flag[0][cnt]=true;if (k<cnt| | (cnt-k)%2) {cout<< "Case #" <<t++<< ":" <<0<<endl;} else{for (int i=1;i<=k;i++) {for (int j=0;j<=n;j++) {if (Flag[i-1][j]) {if (j+1<=n) {dp[i][j+1]= (dp[i-1][j]* ( N-J)%1000000007+dp[i][j+1])%1000000007;flag[i][j+1]=true;} if (j-1>=0) {dp[i][j-1]= (dp[i-1][j]*j%1000000007+dp[i][j-1])%1000000007;flag[i][j-1]=true;}}} cout<< "Case #" <<t++<< ":" <<dp[k][0]<<endl;}} return 0;}
UVALive-6801 Sequence