Submission #281192

#TimeUsernameProblemLanguageResultExecution timeMemory
281192AQTCalvinball championship (CEOI15_teams)C++14
80 / 100
1076 ms42368 KiB
#include <bits/stdc++.h> using namespace std; int N; int arr[10005]; int dp[4005][10005]; const long long MOD = 1000007; long long solve(int n, int m, bool border){ if(n == N+1){ return 1; } if(!border && n%3 == 0 && dp[n/3][m]){ return dp[n/3][m]; } int lim = m+1; if(border){ lim = arr[n]; } long long ans = 0; ans += 1LL * (lim-1) * solve(n+1, m, 0); ans += solve(n+1, max(lim, m), border); ans %= MOD; if(!border && n%3 == 0){ dp[n/3][m] = ans; } return ans; } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> N; for(int i = 1; i<=N; i++){ cin >> arr[i]; } cout << solve(1, 0, 1); }
#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...