Submission #864165

# Submission time Handle Problem Language Result Execution time Memory
864165 2023-10-22T07:53:12 Z vjudge1 Financial Report (JOI21_financial) C++17
5 / 100
155 ms 42836 KB
#include <bits/stdc++.h>

using namespace std;

#define endl '\n'
#define ll long long
#define all(x) x.begin(), x.end()

ll a[(int) 3e5 + 10];

struct SegmentTree {
    vector<ll> sgt;

    SegmentTree(int n) {
        sgt.resize(n, LLONG_MAX);
    }

    ll get(int k, int l, int r, ll v) {
        if (l == r) return l;
        int m = (l + r) / 2;
        if (sgt[k * 2 + 1] < v) return get(k * 2 + 1, m + 1, r, v);
        return get(k * 2, l, m, v);
    }

    void update(int k, int l, int r, int i, ll v) {
        if (l > i || r < i) return;
        if (l == r) {
            sgt[k] = v;
            return;
        }
        int m = (l + r) / 2;
        update(k * 2, l, m, i, v);
        update(k * 2 + 1, m + 1, r, i, v);
        sgt[k] = min(sgt[k * 2], sgt[k * 2 + 1]);
    }
} sgt(4 * (3e5 + 10));

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    int n, d;
    cin >> n >> d;
    for (int i = 1; i <= n; i++) cin >> a[i];
    ll ans = 0;
    multiset<ll> lis[n + 10];
    lis[0].insert(0);
    sgt.update(1, 0, n, 0, 0);
    ll dp[n + 10];
    dp[0] = 0;
    for (int i = 1; i <= n; i++) {
        ll mn;
        if (i > d + 1) {
            mn = *lis[dp[i - d - 1]].begin();
            lis[dp[i - d - 1]].erase(lis[dp[i - d - 1]].find(a[i - d - 1]));
            if (lis[dp[i - d - 1]].size()) {
                if (*lis[dp[i - d - 1]].begin() != mn) sgt.update(1, 0, n, dp[i - d - 1], *lis[dp[i - d - 1]].begin());
            }
            else sgt.update(1, 0, n, dp[i - d - 1], LLONG_MAX);
        }
        dp[i] = sgt.get(1, 0, n, a[i]) + 1;
        if (lis[dp[i]].size()) mn = *lis[dp[i]].begin();
        lis[dp[i]].insert(a[i]);
        if (lis[dp[i]].size() == 1 || a[i] < mn) sgt.update(1, 0, n, dp[i], a[i]);
        ans = max(ans, dp[i]);
        // cout << i << " : " << dp[i] << endl;
    }
    cout << ans;
}

Compilation message

Main.cpp: In function 'int main()':
Main.cpp:63:36: warning: 'mn' may be used uninitialized in this function [-Wmaybe-uninitialized]
   63 |         if (lis[dp[i]].size() == 1 || a[i] < mn) sgt.update(1, 0, n, dp[i], a[i]);
      |             ~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 9820 KB Output is correct
2 Correct 2 ms 9820 KB Output is correct
3 Correct 2 ms 9820 KB Output is correct
4 Correct 2 ms 10072 KB Output is correct
5 Correct 3 ms 9756 KB Output is correct
6 Correct 2 ms 9820 KB Output is correct
7 Correct 2 ms 9820 KB Output is correct
8 Correct 2 ms 9820 KB Output is correct
9 Correct 2 ms 9820 KB Output is correct
10 Correct 2 ms 9816 KB Output is correct
11 Correct 2 ms 9820 KB Output is correct
12 Correct 2 ms 9820 KB Output is correct
13 Correct 2 ms 9820 KB Output is correct
14 Correct 2 ms 9820 KB Output is correct
15 Incorrect 2 ms 9820 KB Output isn't correct
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 9820 KB Output is correct
2 Correct 2 ms 9820 KB Output is correct
3 Correct 2 ms 9820 KB Output is correct
4 Correct 2 ms 10072 KB Output is correct
5 Correct 3 ms 9756 KB Output is correct
6 Correct 2 ms 9820 KB Output is correct
7 Correct 2 ms 9820 KB Output is correct
8 Correct 2 ms 9820 KB Output is correct
9 Correct 2 ms 9820 KB Output is correct
10 Correct 2 ms 9816 KB Output is correct
11 Correct 2 ms 9820 KB Output is correct
12 Correct 2 ms 9820 KB Output is correct
13 Correct 2 ms 9820 KB Output is correct
14 Correct 2 ms 9820 KB Output is correct
15 Incorrect 2 ms 9820 KB Output isn't correct
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 9820 KB Output is correct
2 Correct 2 ms 9820 KB Output is correct
3 Correct 2 ms 9820 KB Output is correct
4 Correct 2 ms 10072 KB Output is correct
5 Correct 3 ms 9756 KB Output is correct
6 Correct 2 ms 9820 KB Output is correct
7 Correct 2 ms 9820 KB Output is correct
8 Correct 2 ms 9820 KB Output is correct
9 Correct 2 ms 9820 KB Output is correct
10 Correct 2 ms 9816 KB Output is correct
11 Correct 2 ms 9820 KB Output is correct
12 Correct 2 ms 9820 KB Output is correct
13 Correct 2 ms 9820 KB Output is correct
14 Correct 2 ms 9820 KB Output is correct
15 Incorrect 2 ms 9820 KB Output isn't correct
16 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 47 ms 28496 KB Output is correct
2 Incorrect 87 ms 28504 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 108 ms 42480 KB Output is correct
2 Correct 120 ms 42520 KB Output is correct
3 Correct 150 ms 42508 KB Output is correct
4 Correct 155 ms 42672 KB Output is correct
5 Correct 120 ms 42524 KB Output is correct
6 Correct 136 ms 42476 KB Output is correct
7 Correct 88 ms 42604 KB Output is correct
8 Correct 123 ms 42836 KB Output is correct
9 Correct 88 ms 42320 KB Output is correct
10 Correct 115 ms 42600 KB Output is correct
11 Correct 146 ms 42708 KB Output is correct
12 Correct 115 ms 42544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 9820 KB Output is correct
2 Correct 2 ms 9820 KB Output is correct
3 Correct 2 ms 9820 KB Output is correct
4 Correct 2 ms 10072 KB Output is correct
5 Correct 3 ms 9756 KB Output is correct
6 Correct 2 ms 9820 KB Output is correct
7 Correct 2 ms 9820 KB Output is correct
8 Correct 2 ms 9820 KB Output is correct
9 Correct 2 ms 9820 KB Output is correct
10 Correct 2 ms 9816 KB Output is correct
11 Correct 2 ms 9820 KB Output is correct
12 Correct 2 ms 9820 KB Output is correct
13 Correct 2 ms 9820 KB Output is correct
14 Correct 2 ms 9820 KB Output is correct
15 Incorrect 2 ms 9820 KB Output isn't correct
16 Halted 0 ms 0 KB -