Submission #1132510

#TimeUsernameProblemLanguageResultExecution timeMemory
1132510KubetiCalvinball championship (CEOI15_teams)C++20
70 / 100
3 ms4680 KiB
#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 = 0, ok = 0; for(int i = 1; i <= n; i++) { if(v[i] != 1) { ok = 1; } // 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(ok) { dp[i][1] = 1; } for(int j = 2; j <= i; j++) { // prefix i, max j dp[i][j] = (dp[i][j] + (dp[i - 1][j] * j + dp[i - 1][j - 1])) % mod; } maxx = max(maxx, v[i]); } /* for(int i = 1; i <= n; i++) { for(int j = 1; j <= i; j++) { if(dp[i][j] != 0) { cout << i << " " << j << ": " << dp[i][j] << '\n'; } } }*/ int ans = 0; for(int j = 1; j <= n; j++) { ans += dp[n][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...