Submission #1291323

#TimeUsernameProblemLanguageResultExecution timeMemory
1291323LudisseyCalvinball championship (CEOI15_teams)C++20
100 / 100
259 ms828 KiB
#include <bits/stdc++.h> #define int long long #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() #define rall(a) a.rbegin(), a.rend() using namespace std; const int MOD=1000007; signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int n; cin >> n; vector<vector<int>> dp(3,vector<int>(n+1,0)); vector<int> a(n+1); vector<int> mx(n+1,0); for (int i = 0; i < n; i++) cin >> a[i+1]; for (int i = 1; i <= n; i++) mx[i]=max(a[i],mx[i-1]); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { dp[(i)%3][j]=(dp[(i-1+3)%3][j]*j)%MOD; dp[(i)%3][j]=(dp[(i)%3][j]+dp[(i-1+3)%3][j-1])%MOD; } if(mx[i-1]>0) dp[i%3][mx[i-1]]=(dp[i%3][mx[i-1]]+a[i]-1+MOD)%MOD; for (int j = 0; j <= n; j++) { dp[(i-2+3)%3][j]=0; } } int sm=1; for (int i = 1; i <= n; i++) sm=(sm+dp[n%3][i])%MOD; cout << sm%MOD << "\n"; 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...