제출 #62529

#제출 시각아이디문제언어결과실행 시간메모리
62529MatheusLealVCalvinball championship (CEOI15_teams)C++17
80 / 100
1065 ms1388 KiB
#include <bits/stdc++.h> #define N 10001 using namespace std; typedef long long ll; ll n, k, v[N], tot, used[N], mod = 1000007; ll dp[2][N], pref[N]; int solve(int i, int k) { if(i > n) return 1; if(dp[i][k] != -1) return dp[i][k]; ll A = (((ll)solve(i + 1, k) * (ll)k) % mod + solve(i + 1, k + 1) % mod)%mod; return dp[i][k] = A; } inline ll pos() { set<int> add; for(int i = 1; i <= n; i++) { pref[i] = add.size(); add.insert(v[i]); } int A = (n + 1)%2, B = n%2; for(int i = n + 1; i >= 1; i--) { for(int k = n; k >= 1; k--) { if(i > n) dp[A][k] = 1; else { dp[A][k] = ( (ll)k * dp[B][k] + dp[B][k + 1])%mod; } } if(i <= n) tot = (tot + dp[B][ pref[i] ]*(v[i] - 1LL) )%mod; swap(A, B); } return (tot + 1)%mod; } int main() { ios::sync_with_stdio(false); cin.tie(0); cin>>n; for(int i = 1; i <= n; i++) cin>>v[i]; cout<<pos()<<"\n"; }
#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...