Submission #98396

#TimeUsernameProblemLanguageResultExecution timeMemory
98396someone_aaCalvinball championship (CEOI15_teams)C++17
0 / 100
73 ms66560 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair using namespace std; const int maxn = 11000; const ll mod = 1000007; int dp[maxn][maxn]; int n, arr[maxn]; bool f[maxn]; int count_pref(int st, int maxv, int limit) { memset(dp, 0, sizeof(dp)); dp[st][maxv] = 1; if(maxv > limit) return 0; for(int i=st+1;i<=n;i++) { for(int j=maxv;j<=limit;j++) { dp[i][j] = (j * dp[i-1][j])%mod + dp[i-1][j-1]; dp[i][j] %= mod; } } ll result = 0LL; for(int i=1;i<=limit;i++) { result += dp[n][i]; result %= mod; } return result; } int main() { cin>>n; int maxv = 0; for(int i=1;i<=n;i++) { cin>>arr[i]; if(arr[i] > maxv) { maxv = arr[i]; f[i] = true; } } int value = 1; ll result = 0LL; for(int i=2;i<=n;i++) { for(int j=1;j<arr[i];j++) { value = max(value, j); result += count_pref(i, value, maxv); result %= mod; } value = max(value, arr[i]); } cout<<(result+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...