Submission #207842

#TimeUsernameProblemLanguageResultExecution timeMemory
207842stefdascaCalvinball championship (CEOI15_teams)C++14
100 / 100
251 ms508 KiB
#include<bits/stdc++.h> using namespace std; const int mod = 1000007; int n, v[10002]; int dp[2][10002]; int add(int a, int b) { int ans = a+b; if(ans >= mod) ans -= mod; return ans; } long long mul(long long a, long long b) { return (a * b) % mod; } int main() { cin >> n; int maxi = 1; for(int i = 1; i <= n; ++i) { cin >> v[i]; dp[1][max(v[i], maxi) - (v[i] > maxi)] = v[i] - 1; maxi = max(maxi, v[i]); for(int j = 1; j <= i; ++j) { dp[1][j] = add(dp[1][j], mul(dp[0][j], j)); dp[1][j+1] = add(dp[1][j+1], dp[0][j]); } memcpy(dp[0], dp[1], sizeof(dp[1])); memset(dp[1], 0, sizeof(dp[1])); } int sum = 1; for(int i = 1; i <= n; ++i) sum = add(sum, dp[0][i]); cout << sum; 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...