제출 #1219251

#제출 시각아이디문제언어결과실행 시간메모리
1219251zhiganov_vWeirdtree (RMI21_weirdtree)C++20
5 / 100
2092 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) {
    b.clear();
    for (ll i = l; i <= r; i++) b.push_back(i);
    sort(b.begin(), b.end(), [&](const int x, const int y)-> bool {
        if (a[x] != a[y]) return a[x] > a[y];
        return x < y;
    });
    ll sm = 0, cnt = 0;
    for (int i = 0; i < b.size(); i++) {
        cnt++;
        sm += a[b[i]];
        if (i + 1 == b.size() || sm - cnt * a[b[i + 1]] >= k) {
            ll p = (sm - k + cnt - 1) / cnt;
            ll q = k - (sm - p * cnt);
            if (sm < k) {
                p = 0, q = 0;
            }
            for (ll j = 0; j < q; j++) a[b[j]] = p - 1;
            for (ll j = q; j <= i; j++) a[b[j]] = p;
            return;
        }
    }
}

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...