Submission #1132512

#TimeUsernameProblemLanguageResultExecution timeMemory
1132512KubetiCalvinball championship (CEOI15_teams)C++20
70 / 100
61 ms328 KiB
#include <bits/stdc++.h> using namespace std; const int nmax = 1e4 + 1, mod = 1e6 + 7; int dp[2][nmax]; int v[nmax]; int radd(int a, int b) { a += b; if(a >= mod) { a -= mod; } return a; } 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 = 0, ok = 0; for(int i = 1; i <= n; i++) { for(int j = 2; j <= i; j++) { dp[i & 1][j] = (dp[(i - 1) & 1][j] * j + dp[(i - 1) & 1][j - 1]) % mod; } if(v[i] != 1) { ok = 1; } dp[i & 1][0] = 1; if(v[i] != 1) { dp[i & 1][maxx] = radd(dp[i & 1][maxx], dp[(i - 1) & 1][0] * (v[i] - 1)) % mod; } if(ok) { dp[i & 1][1] = 1; } maxx = max(maxx, v[i]); } int ans = 0; for(int j = 1; j <= n; j++) { ans += dp[n & 1][j]; } cout << (ans + 1) % mod; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...