Submission #1219261

#TimeUsernameProblemLanguageResultExecution timeMemory
1219261zhiganov_vWeirdtree (RMI21_weirdtree)C++20
13 / 100
2096 ms2888 KiB
#include "weirdtree.h"
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll N = 1 << 17;
ll a[N];

void initialise(int n, int q, int h[]) {
    for (ll i = 1; i <= n; i++) a[i] = h[i];
}

vector<int> b;

void cut(int l, int r, int k) {
    ll lx = 0, rx = 1e9 + 20;
    while (lx + 1 < rx) {
        ll mx = (lx + rx) / 2;
        ll need = 0;
        for (ll i = l;i<=r;i++) {
            need += max(a[i] - mx, 0ll);
        }
        if (need <= k) rx = mx;
        else lx = mx;
    }
    for (ll i = l;i<=r;i++) {
        if (a[i] > rx) {
            k -= a[i] - rx;
            a[i] = rx;
        }
    }
    for (ll i = l;i<=r;i++) {
        if (k > 0 && a[i] == rx) {
            k--;
            a[i]--;
        }
    }
}

void magic(int i, int x) {
    a[i] = x;
}

long long int inspect(int l, int r) {
    ll ans = 0;
    for (ll i = l; i <= r; i++) {
        ans += a[i];
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...