104022024-04-01 20:14:20Valaki2Barátokcpp17Elfogadva 100/100167ms40968 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ÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva7ms11140 KiB
2Elfogadva82ms18444 KiB
subtask211/11
3Elfogadva6ms12332 KiB
4Elfogadva8ms12976 KiB
5Elfogadva8ms13216 KiB
6Elfogadva8ms13408 KiB
7Elfogadva8ms13780 KiB
8Elfogadva8ms13984 KiB
9Elfogadva8ms14044 KiB
10Elfogadva8ms14232 KiB
subtask312/12
11Elfogadva143ms28412 KiB
12Elfogadva137ms29288 KiB
13Elfogadva141ms30112 KiB
14Elfogadva126ms33864 KiB
15Elfogadva133ms31508 KiB
16Elfogadva123ms35944 KiB
17Elfogadva135ms34024 KiB
subtask431/31
18Elfogadva133ms33132 KiB
19Elfogadva137ms34200 KiB
20Elfogadva125ms38712 KiB
21Elfogadva134ms36092 KiB
22Elfogadva137ms33936 KiB
23Elfogadva150ms35248 KiB
24Elfogadva112ms32624 KiB
25Elfogadva167ms36144 KiB
26Elfogadva93ms30960 KiB
subtask546/46
27Elfogadva143ms36584 KiB
28Elfogadva148ms36524 KiB
29Elfogadva162ms36400 KiB
30Elfogadva129ms39212 KiB
31Elfogadva136ms35536 KiB
32Elfogadva125ms40968 KiB
33Elfogadva87ms30420 KiB
34Elfogadva87ms30404 KiB
35Elfogadva136ms34032 KiB
36Elfogadva123ms40828 KiB
37Elfogadva136ms33876 KiB
38Elfogadva160ms36292 KiB
39Elfogadva157ms35704 KiB
40Elfogadva111ms32608 KiB
41Elfogadva150ms35316 KiB