제출 #98383

#제출 시각아이디문제언어결과실행 시간메모리
98383someone_aaCalvinball championship (CEOI15_teams)C++17
20 / 100
99 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 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; } } dp[1][1] = 1LL; for(int i=2;i<=n;i++) { for(int j=1;j<=n;j++) { ll temp = 1LL * j * dp[i-1][j] + dp[i-1][j-1]; temp %= mod; dp[i][j] = temp; } } ll result = 0LL; int j = maxv; for(int i=n;i>=2;i--) { //cout<<i<<": "<<f[i]<<" -> "<<arr[i]<<"\n"; if(f[i]) { // not saving anything j--; } else { ll temp = 1LL * (arr[i]-1) * dp[i-1][j] + dp[i-1][j-1]; //cout<<temp<<"\n"; temp %= mod; result += temp; result %= mod; } } for(int i=1;i<maxv;i++) { result += dp[n][i]; result %= mod; } result++; result %= mod; cout<<result<<"\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...