제출 #527351

#제출 시각아이디문제언어결과실행 시간메모리
527351beepbeepsheepCalvinball championship (CEOI15_teams)C++17
100 / 100
540 ms656 KiB
#include <bits/stdc++.h>
using namespace std;
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
#define ll long long
#define ii pair<ll,ll>
#define endl '\n'
const ll inf=1e15;
const ll mod=1e6+7;
const ll maxn=10005;

ll dp[maxn],nxt[maxn],arr[maxn],pref[maxn];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    ll n,ans=0;
    cin>>n;
    for (int i=1;i<=n;i++){
        cin>>arr[i];
        dp[i]=1;
        pref[i]=max(arr[i],pref[i-1]);
    }
    for (int i=n;i>=1;i--){
        for (int j=1;j<maxn-1;j++){
            nxt[j]=(dp[j]*(j))%mod+dp[j+1];
            nxt[j]%=mod;
        }
        for (int j=1;j<arr[i];j++){
            ans+=dp[max<ll>(j,pref[i-1])];
            ans%=mod;
        }
        swap(dp,nxt);
    }
    cout<<(ans+1)%mod;
    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...