Submission #210753

#TimeUsernameProblemLanguageResultExecution timeMemory
210753johuthaCalvinball championship (CEOI15_teams)C++14
70 / 100
54 ms65540 KiB
#include <iostream> #include <vector> #include <algorithm> #define int int64_t #define MOD (int)(1e6+7) using namespace std; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); int n; cin >> n; vector<int> ip(n); for (int i = 0; i < n; i++) { cin >> ip[i]; } vector<vector<int>> dp(n + 1, vector<int>(n + 1, 0)); vector<vector<int>> st(n + 1, vector<int>(n + 2, 0)); for (int i = 0; i < n + 2; i++) st[0][i] = 1; for (int i = 1; i <= n; i++) { for (int j = 0; j <= n; j++) { dp[i][j] = (dp[i - 1][j] + st[i - 1][j + 1]) * j; st[i][j] = dp[i - 1][j] + st[i - 1][j + 1]; dp[i][j] %= MOD; st[i][j] %= MOD; } } int res = 0; for (int i = n - 1; i >= 0; i--) { int mmax = 0; for (int j = 0; j < i; j++) mmax = max(mmax, ip[j]); int base = ip[i] - 1; for (int j = n - i - 1; j >= 0; j--) { // cerr << i << " " << j << " " << base << "\n"; res += base*st[j][mmax + 1]; base *= mmax; base %= MOD; res %= MOD; } } cout << (res + 1) << "\n"; }
#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...