답안 #484774

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
484774 2021-11-05T12:51:22 Z Victor Calvinball championship (CEOI15_teams) C++17
100 / 100
346 ms 1000 KB
    #include <bits/stdc++.h>
     
    using namespace std;
     
    #define rep(i, a, b) for (int i = (a); i < (b); ++i)
    #define per(i, a, b) for (int i = (b - 1); i >= (a); --i)
    #define trav(a, x) for (auto &a : x)
     
    #define all(x) x.begin(), x.end()
    #define sz(x) x.size()
    #define pb push_back
    #define debug(x) cout<<#x<<" = "<<x<<endl
     
    #define umap unordered_map
    #define uset unordered_set
     
    typedef pair<int, int> ii;
    typedef pair<int, ii> iii;
    typedef vector<int> vi;
    typedef vector<ii> vii;
    typedef vector<vi> vvi;
     
    typedef long long ll;
    typedef pair<ll,ll> pll;
    typedef vector<ll> vll;
    typedef vector<pll> vpll;
     
    const int INF = 1000007;
     
    int main() {
        cin.tie(0)->sync_with_stdio(0);
        cin.exceptions(cin.failbit);
     
        int n,arr[10001];
        set<ii>vals;
        cin>>n;
        rep(i,1,n+1){
            cin>>arr[i];
            vals.emplace(arr[i],i);
        }
     
        ll ans=1;
        vll dp(n+1,1),dp2(n+1,0);
        per(i,2,n+1){
            vals.erase({arr[i],i});
            int mx=(--vals.end())->first;
     
            rep(j,1,n+1){
                if(1<j)dp2[j-1]=(dp2[j-1]+dp[j])%INF;
                if(j<i)dp2[j]=(dp2[j]+dp[j]*ll(j))%INF;
            }
     
            ans=(ans+dp[mx]*(arr[i]-1))%INF;
            dp.swap(dp2);
            dp2.assign(n+1,0);
        }
        cout<<ans<<endl;
        return 0;
    }
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 1 ms 332 KB Output is correct
5 Correct 1 ms 332 KB Output is correct
6 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 0 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 2 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 332 KB Output is correct
2 Correct 4 ms 332 KB Output is correct
3 Correct 6 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 300 ms 996 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 87 ms 656 KB Output is correct
2 Correct 96 ms 588 KB Output is correct
3 Correct 79 ms 588 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 319 ms 980 KB Output is correct
2 Correct 299 ms 972 KB Output is correct
3 Correct 346 ms 1000 KB Output is correct