Solution
1746-Array_Description.cpp
1#include<bits/stdc++.h>
2using namespace std;
3#define int long long
4constexpr int M=1e9+7;
5signed main(){
6 ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
7 int n,m; cin>>n>>m;
8 int a[n]; for(auto&x:a) cin>>x;
9 int dp[n][m+2]{};
10 if(a[0]==0) for(int j=1;j<=m;++j) dp[0][j]=1;
11 else dp[0][a[0]]=1;
12 for(int i=1;i<n;++i){
13 if(a[i]==0) for(int j=1;j<=m;++j){
14 dp[i][j]=(dp[i-1][j-1]+dp[i-1][j]+dp[i-1][j+1])%M;
15 }else dp[i][a[i]]=(dp[i-1][a[i]-1]+dp[i-1][a[i]]+dp[i-1][a[i]+1])%M;
16 }
17 int ans=0;
18 for(int j=1;j<=m;++j) ans+=dp[n-1][j],ans%=M;
19 cout<<ans<<'\n';
20 return 0;
21}Editorial not yet generated for this problem. Run the editorial generation script to add hints and detailed explanations.