10402 2024. 04. 01 20:14:20 Valaki2 Barátok cpp17 Elfogadva 100/100 167ms 40968 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pb push_back
#define mp make_pair
#define pii pair<int, int>
#define fi first
#define se second

const int maxn = 2e5;

int n;
int v[1 + maxn];
vector<int> to_upd[1 + maxn];

int tree[1 + 4 * maxn];

void update(int v, int vl, int vr, int pos, int val) {
    if(vl == vr) {
        tree[v] += val;
    } else {
        int mid = (vl + vr) / 2;
        if(pos <= mid) {
            update(2 * v, vl, mid, pos, val);
        } else {
            update(2 * v + 1, mid + 1, vr, pos, val);
        }
        tree[v] = tree[2 * v] + tree[2 * v + 1];
    }
}

int query(int v, int vl, int vr, int ql, int qr) {
    if(ql > vr || qr < vl) {
        return 0;
    }
    if(vl == ql && vr == qr) {
        return tree[v];
    }
    int mid = (vl + vr) / 2;
    return query(2 * v, vl, mid, ql, min(qr, mid))
        + query(2 * v + 1, mid + 1, vr, max(ql, mid + 1), qr);
}

void solve() {
    cin >> n;
    for(int i = 1; i <= n; i++) {
        cin >> v[i];
    }
    long long ans = 0;
    for(int i = n; i >= 1; i--) {
        ans += query(1, 1, n, 1, min(n, i + v[i]));
        update(1, 1, n, i, 1);
        to_upd[max(1, i - v[i])].pb(i);
        for(int x : to_upd[i]) {
            update(1, 1, n, x, -1);
        }
    }
    cout << ans << "\n";
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 7ms 11140 KiB
2 Elfogadva 82ms 18444 KiB
subtask2 11/11
3 Elfogadva 6ms 12332 KiB
4 Elfogadva 8ms 12976 KiB
5 Elfogadva 8ms 13216 KiB
6 Elfogadva 8ms 13408 KiB
7 Elfogadva 8ms 13780 KiB
8 Elfogadva 8ms 13984 KiB
9 Elfogadva 8ms 14044 KiB
10 Elfogadva 8ms 14232 KiB
subtask3 12/12
11 Elfogadva 143ms 28412 KiB
12 Elfogadva 137ms 29288 KiB
13 Elfogadva 141ms 30112 KiB
14 Elfogadva 126ms 33864 KiB
15 Elfogadva 133ms 31508 KiB
16 Elfogadva 123ms 35944 KiB
17 Elfogadva 135ms 34024 KiB
subtask4 31/31
18 Elfogadva 133ms 33132 KiB
19 Elfogadva 137ms 34200 KiB
20 Elfogadva 125ms 38712 KiB
21 Elfogadva 134ms 36092 KiB
22 Elfogadva 137ms 33936 KiB
23 Elfogadva 150ms 35248 KiB
24 Elfogadva 112ms 32624 KiB
25 Elfogadva 167ms 36144 KiB
26 Elfogadva 93ms 30960 KiB
subtask5 46/46
27 Elfogadva 143ms 36584 KiB
28 Elfogadva 148ms 36524 KiB
29 Elfogadva 162ms 36400 KiB
30 Elfogadva 129ms 39212 KiB
31 Elfogadva 136ms 35536 KiB
32 Elfogadva 125ms 40968 KiB
33 Elfogadva 87ms 30420 KiB
34 Elfogadva 87ms 30404 KiB
35 Elfogadva 136ms 34032 KiB
36 Elfogadva 123ms 40828 KiB
37 Elfogadva 136ms 33876 KiB
38 Elfogadva 160ms 36292 KiB
39 Elfogadva 157ms 35704 KiB
40 Elfogadva 111ms 32608 KiB
41 Elfogadva 150ms 35316 KiB