Submission #1053533

#TimeUsernameProblemLanguageResultExecution timeMemory
1053533VMaksimoski008Calvinball championship (CEOI15_teams)C++17
20 / 100
558 ms32852 KiB
#include <bits/stdc++.h> #define int long long using namespace std; using ll = long long; using pii = pair<int, int>; using pll = pair<ll, ll>; const int mod = 1e9 + 7; const int LOG = 20; const int maxn = 1e5 + 5; int n; vector<int> v; ll dp[1005][1005][2]; ll f(int pos, int mx, int under) { if(pos == n + 1) return under; if(dp[pos][mx][under] != -1) return dp[pos][mx][under]; ll ans = 0; for(int i=1; i<=min(pos, mx+1); i++) { if(!under && i > v[pos]) continue; ans = (ans + f(pos+1, max(mx, i), under|(i<v[pos]))) % mod; } return dp[pos][mx][under] = ans; } signed main() { memset(dp, -1, sizeof(dp)); cin >> n; v.resize(n+1); for(int i=1; i<=n; i++) cin >> v[i]; cout << (f(2, 1, 0) + 1) % mod << '\n'; 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...