Submission #66333334


Source Code Expand

Copy
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
static const ll NEG_INF = -(ll)1e18;
struct SegTree {
int n, size;
vector<ll> t;
SegTree(int _n) {
n = _n;
size = 1;
while (size < n) size <<= 1;
t.assign(2*size, NEG_INF);
}
void update(int idx, ll v) {
int p = idx + size;
t[p] = v;
while (p > 1) {
p >>= 1;
t[p] = max(t[p<<1], t[(p<<1)|1]);
}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
static const ll NEG_INF = -(ll)1e18;

struct SegTree {
    int n, size;
    vector<ll> t;
    SegTree(int _n) {
        n = _n;
        size = 1;
        while (size < n) size <<= 1;
        t.assign(2*size, NEG_INF);
    }
    void update(int idx, ll v) {
        int p = idx + size;
        t[p] = v;
        while (p > 1) {
            p >>= 1;
            t[p] = max(t[p<<1], t[(p<<1)|1]);
        }
    }
    ll query(int l, int r) {
        if (l > r) return NEG_INF;
        l += size; 
        r += size;
        ll res = NEG_INF;
        while (l <= r) {
            if (l & 1) res = max(res, t[l++]);
            if (!(r & 1)) res = max(res, t[r--]);
            l >>= 1;
            r >>= 1;
        }
        return res;
    }
};

int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int N;
    ll D, R;
    cin >> N >> D >> R;

    vector<int> H(N);
    for (int i = 0; i < N; i++) {
        cin >> H[i];
    }
    vector<int> pos(N+1);
    for (int i = 0; i < N; i++) {
        pos[ H[i] ] = i;
    }
    vector<ll> dp(N, 0);

    SegTree st(N);
    int k = 1;
    ll answer = 0;

    for (int h = 1; h <= N; h++) {
        int i = pos[h];
        while (k <= N && k <= h - D) {
            int j = pos[k];
            st.update(j, dp[j]);
            k++;
        }

        int left  = max(0, i - (int)R);
        int right = min(N - 1, i + (int)R);

        ll mx = st.query(left, right);

        if (mx < 0) {
            dp[i] = 0;
        } else {
            dp[i] = 1 + mx;
        }
        answer = max(answer, dp[i]);
    }
    cout << answer << "\n";
    return 0;
}

Submission Info

Submission Time
Task F - Athletic
User OYU__0YU
Language C++ 20 (gcc 12.2)
Score 500
Code Size 1761 Byte
Status AC
Exec Time 86 ms
Memory 19292 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 39
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt
All 00_sample_00.txt, 00_sample_01.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3420 KiB
00_sample_01.txt AC 1 ms 3500 KiB
01_test_00.txt AC 1 ms 3436 KiB
01_test_01.txt AC 1 ms 3560 KiB
01_test_02.txt AC 1 ms 3616 KiB
01_test_03.txt AC 1 ms 3632 KiB
01_test_04.txt AC 1 ms 3552 KiB
01_test_05.txt AC 1 ms 3564 KiB
01_test_06.txt AC 47 ms 15376 KiB
01_test_07.txt AC 79 ms 18880 KiB
01_test_08.txt AC 22 ms 9352 KiB
01_test_09.txt AC 12 ms 6536 KiB
01_test_10.txt AC 21 ms 9620 KiB
01_test_11.txt AC 53 ms 18064 KiB
01_test_12.txt AC 23 ms 9880 KiB
01_test_13.txt AC 2 ms 3612 KiB
01_test_14.txt AC 16 ms 7148 KiB
01_test_15.txt AC 10 ms 6532 KiB
01_test_16.txt AC 56 ms 16236 KiB
01_test_17.txt AC 68 ms 17484 KiB
01_test_18.txt AC 86 ms 19212 KiB
01_test_19.txt AC 75 ms 19268 KiB
01_test_20.txt AC 70 ms 19092 KiB
01_test_21.txt AC 85 ms 19264 KiB
01_test_22.txt AC 73 ms 19068 KiB
01_test_23.txt AC 85 ms 19168 KiB
01_test_24.txt AC 63 ms 19292 KiB
01_test_25.txt AC 41 ms 19128 KiB
01_test_26.txt AC 42 ms 19108 KiB
01_test_27.txt AC 42 ms 19208 KiB
01_test_28.txt AC 42 ms 19112 KiB
01_test_29.txt AC 50 ms 19088 KiB
01_test_30.txt AC 66 ms 19120 KiB
01_test_31.txt AC 65 ms 19172 KiB
01_test_32.txt AC 64 ms 19068 KiB
01_test_33.txt AC 65 ms 19212 KiB
01_test_34.txt AC 65 ms 19264 KiB
01_test_35.txt AC 62 ms 19264 KiB
01_test_36.txt AC 1 ms 3496 KiB


2025-06-03 (Tue)
18:49:34 +09:00