Submission #98399

#TimeUsernameProblemLanguageResultExecution timeMemory
98399someone_aaCalvinball championship (CEOI15_teams)C++17
10 / 100
3 ms384 KiB
#include <bits/stdc++.h> #define ll long long #define pb push_back #define mp make_pair using namespace std; const int maxn = 20; const ll mod = 1000007; int dp[maxn][maxn]; int n, arr[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++) { ll temp = 1LL * (j * dp[i-1][j])%mod + dp[i-1][j-1]; temp %= mod; dp[i][j] = temp; } } 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]; maxv = max(maxv, arr[i]); } 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...