Submission #753011

#TimeUsernameProblemLanguageResultExecution timeMemory
753011Ronin13Calvinball championship (CEOI15_teams)C++14
80 / 100
1059 ms976 KiB
#include <bits/stdc++.h> #define ll long long #define f first #define s second #define pll pair<ll,ll> #define pb push_back #define epb emplace_back #define ull unsigned ll #define pii pair<int,int> using namespace std; const int nmax = 10001; ll mod = 1e6 + 7; ll dp[nmax]; ll DP[nmax]; ll c[nmax]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); int n; cin >> n; //fil(2); int a[n + 1]; for(int i = 1; i <= n; i++){ cin >> a[i]; } dp[0] = 1; DP[0] = 1; c[0] = 1; for(int i = 1; i <= n ;i++){ for(int j = i; j >= 1 ;j--){ dp[j] = (ll)dp[j - 1] + (ll)dp[j] * (ll)j; DP[i] += dp[j]; DP[i] %= mod; dp[j] %= mod; } dp[0] = 0; // cout << DP[i] << ' '; } set <int> st; ll po[n + 1]; ll ans = 1; ll val[n + 1]; val[1] = 1; st.insert(a[1]); for(int i = 2; i <= n; i++){ st.insert(a[i]); val[i] = st.size(); } for(int i = n ;i >= 2; --i){ c[n - i] = 1; for(int j = n - i - 1; j >= 1 ;j--) c[j] += c[j - 1], c[j] %= mod; if(i != 1){ ll P = 1; ll res = 0; for(int x = n - i; x >= 0; x--){ res += c[x] * DP[x] * P; res %= mod; P *= val[i - 1]; P %= mod; } res *= (ll)(a[i] - 1); res %= mod; ans += res; ans %= mod; } } cout << ans; }

Compilation message (stderr)

teams.cpp: In function 'int main()':
teams.cpp:41:8: warning: unused variable 'po' [-Wunused-variable]
   41 |     ll po[n + 1];
      |        ^~
#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...