MCPcopy Create free account
hub / github.com/Jonathan-Uy/CSES-Solutions / main

Function main

Dynamic Programming/Array Description.cpp:12–40  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

10ll ans, dp[maxN+1][maxM+1];
11
12int main(){
13 scanf("%d %d", &N, &M);
14 for(int i = 1; i <= N; i++)
15 scanf("%d", &x[i]);
16
17 if(x[1])
18 dp[1][x[1]] = 1;
19 else
20 for(int i = 1; i <= M; i++)
21 dp[1][i] = 1;
22
23 for(int i = 2; i <= N; i++){
24 for(int j = 1; j <= M; j++){
25 dp[i][j] = dp[i-1][j];
26 if(j != 1) dp[i][j] += dp[i-1][j-1];
27 if(j != M) dp[i][j] += dp[i-1][j+1];
28 dp[i][j] %= MOD;
29 }
30
31 if(x[i])
32 for(int j = 0; j <= M; j++)
33 if(j != x[i])
34 dp[i][j] = 0;
35 }
36
37 for(int i= 1; i <= M; i++)
38 ans = (ans + dp[N][i]) % MOD;
39 printf("%lld\n", ans);
40}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected