제출 #1081558

#제출 시각아이디문제언어결과실행 시간메모리
1081558jk_Calvinball championship (CEOI15_teams)C++14
100 / 100
94 ms644 KiB
#include <bits/stdc++.h> using namespace std; const int mod=1000007; int main() { int n; cin >> n; vector<int> v; copy_n(istream_iterator<int>(cin), n, back_inserter(v)); vector<int> prefixmax(n); partial_sum(v.begin(), v.end(), prefixmax.begin(), [](int a, int b) { return max(a, b); }); int64_t ans = 1; array<vector<int>, 2> dp; dp[0].assign(n, 1); dp[1].assign(n, 1); for (int i = n-1; i >= 1; --i) { if (i==n-1) { dp[0].assign(n, 1); } else { auto& dp0 = dp[(n-i-1)%2]; auto& dp1 = dp[(n-i)%2]; for (int k = 1; k <= i; ++k) dp0[k] = (k*(int64_t)dp1[k] + dp1[k+1])%mod; } ans = (ans + (v[i]-1)*(int64_t)dp[(n-i-1)%2][prefixmax[i-1]])%mod; } cout << ans << '\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...