#include <bits/stdc++.h>
using namespace std;
const int nmax = 1e3 + 1, mod = 1e6 + 7;
int dp[nmax][nmax];
int v[nmax];
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
int n;
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> v[i];
}
dp[0][0] = 1;
int maxx = 1;
for(int i = 1; i <= n; i++) {
// pastram prefixul pana in i
dp[i][0] = 1;
// pastram prefixul pana in i - 1
if(v[i] != 1) {
dp[i][maxx] = dp[i - 1][0] * (v[i] - 1);
}
// maxim 1
if(maxx != 1) {
dp[i][1] = 1;
}
for(int j = 2; j <= n; j++) {
// prefix i, max j
dp[i][j] = (dp[i][j] + (dp[i - 1][j] * (j - 1) + dp[i - 1][j - 1])) % mod;
}
maxx = max(maxx, v[i]);
}
int ans = 0;
for(int j = 1; j <= 9; j++) {
ans += dp[n][j];
}
cout << (ans + 1) % mod;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |