제출 #1267823

#제출 시각아이디문제언어결과실행 시간메모리
1267823GoBananas69Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
17 / 100
3093 ms23876 KiB
#include <algorithm>
#include <cmath>
#include <iostream>
#include <vector>
typedef long long ll;
using namespace std;

struct SegmentTree {
    int n;
    vector<int> nums;
    vector<int> tree;
    void build(int i, int L, int R) {
        if (L == R) {
            tree[i] = nums[L];
            return;
        }
        int m = (L + R) / 2;
        int x = 2 * i + 1, y = x + 1;
        build(x, L, m);
        build(y, m + 1, R);
        tree[i] = max(tree[x], tree[y]);
    }
    int query(int i, int L, int R, int l, int r) {
        if (L == l && r == R) {
            return tree[i];
        }
        int m = (L + R) / 2;
        int x = 2 * i + 1, y = x + 1;
        if (r <= m) {
            return query(x, L, m, l, r);
        } else if (l > m) {
            return query(y, m + 1, R, l, r);
        } else {
            int q1 = query(x, L, m, l, m);
            int q2 = query(y, m + 1, R, m + 1, r);
            return max(q1, q2);
        }
    }
    SegmentTree(vector<int> &v) : n(v.size()), nums(v) {
        tree.resize(4 * n);
        build(0, 0, n - 1);
    }
    int query(int l, int r) { return query(0, 0, n - 1, l, r); }
};

int main() {
    cin.tie(0)->sync_with_stdio(0);
    int n, q;
    cin >> n >> q;
    vector<int> w(n);
    for (int &i : w) {
        cin >> i;
    }
    SegmentTree tree(w);
    while (q--) {
        int l, r, k;
        cin >> l >> r >> k;
        --l;
        --r;
        int inv_max = 0;
        for (int i = l + 1; i <= r; ++i) {
            int mx = tree.query(l, i - 1);
            if (mx > w[i]) inv_max = max(inv_max, w[i] + mx); 
        }
        cout << (inv_max > k ? "0\n" : "1\n");
    }
}
#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...