Submission #873341

# Submission time Handle Problem Language Result Execution time Memory
873341 2023-11-14T21:13:02 Z bobbilyking Calvinball championship (CEOI15_teams) C++17
100 / 100
138 ms 796 KB
#pragma GCC target ("avx2")
#pragma GCC optimize ("O3")
#pragma GCC optimize ("unroll-loops")

#include<bits/stdc++.h>
#include<math.h>
using namespace std;

typedef long long int ll;
typedef long double ld;
typedef pair<ll, ll> pl;

#define K first
#define V second
#define G(x) ll x; cin >> x;
#define GD(x) ld x; cin >> x;
#define GS(s) string s; cin >> s;
#define EX(x) { cout << x << '\n'; exit(0); }
#define A(a) (a).begin(), (a).end()
#define F(i, l, r) for (ll i = (l); i < r; ++i)

#define NN 10010
#define M 1000007 // 998244353

ll dp[2][NN];

ll n_dp = 0;

int main(){
//    freopen("a.in", "r", stdin);
//    freopen("a.out", "w", stdout);

    ios_base::sync_with_stdio(false); cin.tie(0);
    cout << fixed << setprecision(20);
    
    fill(dp[0], dp[0]+NN, 1ll);

    G(n)
    vector<ll> a(n), mxes(n);
    ll mx = 1; ll answer = 1;
    F(i, 0, n) {
        cin >> a[i];
        mxes[i] = mx;
        mx = max(mx, a[i]);
    }

    for (ll left = n-1; left >=0; --left) {
        (answer = answer + (a[left]-1) * dp[n_dp][mxes[left]])%=M;
        n_dp ^= 1;
        F(l, 0, NN-1) {
            dp[n_dp][l] = (l * dp[n_dp^1][l] + dp[n_dp^1][l+1])%M; 
        }
        dp[n_dp][NN-1] = (NN-1) * dp[n_dp^1][NN-1]%M;
    }

    cout << answer << '\n';

    
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 600 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
4 Correct 0 ms 604 KB Output is correct
5 Correct 0 ms 604 KB Output is correct
6 Correct 0 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 604 KB Output is correct
2 Correct 1 ms 604 KB Output is correct
3 Correct 0 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 604 KB Output is correct
2 Correct 0 ms 604 KB Output is correct
3 Correct 1 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 604 KB Output is correct
2 Correct 2 ms 348 KB Output is correct
3 Correct 2 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 8 ms 604 KB Output is correct
2 Correct 7 ms 600 KB Output is correct
3 Correct 7 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 13 ms 632 KB Output is correct
2 Correct 13 ms 624 KB Output is correct
3 Correct 14 ms 604 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 132 ms 736 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 66 ms 600 KB Output is correct
2 Correct 66 ms 684 KB Output is correct
3 Correct 66 ms 688 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 132 ms 744 KB Output is correct
2 Correct 138 ms 772 KB Output is correct
3 Correct 132 ms 796 KB Output is correct