Submission #1121821

#TimeUsernameProblemLanguageResultExecution timeMemory
1121821TahirAliyevCalvinball championship (CEOI15_teams)C++17
100 / 100
386 ms760 KiB
#include <bits/stdc++.h> // #pragma GCC optimize("Ofast,no-stack-protector,unroll-loops") // #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") #define int long long #define ll long long #define pii pair<int, int> #define all(v) v.begin(), v.end() using namespace std; const int oo = 1e18 + 9; const int MAX = 10000 + 5, LOGMAX = 20, B = 441, MOD = 1e6 + 7; int dp[2][MAX]; int id = 1; int n; void calc(){ for(int j = 0; j <= n - id; j++){ dp[1][j] = (dp[0][j] * j % MOD + dp[0][j + 1]) % MOD; } for(int j = 0; j <= n; j++){ swap(dp[0][j], dp[1][j]); } id++; } void solve(){ cin >> n; for(int i = 1; i <= n; i++) dp[0][i] = 1; int arr[n + 1]; int pre[n + 1]; pre[0] = 0; for(int i = 1; i <= n; i++){ cin >> arr[i]; pre[i] = max(pre[i - 1], arr[i]); } int ans = 1; for(int i = n; i >= 1; i--){ for(int j = 1; j < arr[i]; j++){ ans += dp[0][pre[i - 1]]; ans %= MOD; } calc(); } cout << ans << '\n'; } signed main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; while(t--) solve(); }
#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...