Submission #231013

#TimeUsernameProblemLanguageResultExecution timeMemory
231013AlexLuchianovCalvinball championship (CEOI15_teams)C++14
100 / 100
323 ms632 KiB
#include <iostream> #include <vector> #include <algorithm> #include <cassert> #include <cmath> using namespace std; using ll = long long; #define MIN(a, b) (((a) < (b)) ? (a) ? (b)) #define MAX(a, b) (((a) < (b)) ? (b) : (a)) int const nmax = 10000; int const modulo = 1000007; int v[5 + nmax], pref[5 + nmax]; int dp[5 + nmax]; int main() { int n; cin >> n; for(int i = 1;i <= n; i++) { cin >> v[i]; pref[i] = max(pref[i - 1], v[i]); } for(int i = 0; i <= n; i++) dp[i] = 1; ll result = 0; for(int i = n; 1 <= i; i--){ for(int j = 1; j < v[i]; j++) { result += dp[pref[i - 1]]; if(modulo <= result) result -= modulo; } for(int j = 0; j <= n; j++) dp[j] = (1LL * dp[j] * j + dp[j + 1]) % modulo; } cout << (result + 1) % modulo; 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...