제출 #527297

#제출 시각아이디문제언어결과실행 시간메모리
527297beepbeepsheepCalvinball championship (CEOI15_teams)C++17
60 / 100
1090 ms7884 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=1005; int dp[maxn][maxn]; int precom[maxn][maxn]; ll expo(ll n, ll x){ if (precom[n][x]) return precom[n][x]; if (x==0) return 1; if (x==1) return n; ll temp=expo(n,x/2); if (x&1){ return (temp*(temp*n)%mod)%mod; } return precom[n][x]=(temp*temp)%mod; } ll solve(ll digit, ll rem){ if (rem==0) return 1; if (dp[digit][rem]!=-1) return dp[digit][rem]; ll ans=0; for (int i=1;i<=rem;i++){ ans+=solve(digit+1,rem-i)*expo(digit,i-1); ans%=mod; } ans+=expo(digit,rem); return dp[digit][rem]=ans%mod; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); ll n,ele,ans=0; cin>>n; ll ele2=0,temp; memset(dp,-1,sizeof(dp)); for (int i=1;i<=n;i++){ cin>>ele; for (int j=1;j<ele;j++){ temp=max<ll>(j,ele2); ans+=solve(temp,n-i); ans%=mod; } ele2=max(ele,ele2); } 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...