Submission #658119

#TimeUsernameProblemLanguageResultExecution timeMemory
658119FatihSolakCalvinball championship (CEOI15_teams)C++17
100 / 100
375 ms532 KiB
#include <bits/stdc++.h> #define N 200005 using namespace std; int a[N]; int maxi[N]; const int mod = 1000007; void solve(){ int n; cin >> n; for(int i = 1;i<=n;i++){ cin >> a[i]; maxi[i] = max(maxi[i-1],a[i]); } vector<int> dp(n+1,1); int ans = 0; for(int i = n;i>=1;i--){ ans = (ans + (long long)(a[i] - 1)*dp[maxi[i-1]])%mod; vector<int> ndp(n+1,0); for(int j = 1;j<=n;j++){ ndp[j] = (long long)dp[j] * j%mod; if(j+1 <= n) ndp[j] = (ndp[j] + dp[j+1])%mod; } dp = ndp; } cout << (ans+1)%mod; } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); #ifdef Local freopen("in.txt","r",stdin); freopen("out.txt","w",stdout); #endif int t=1; //cin>>t; while(t--){ solve(); } #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#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...