#include <bits/stdc++.h>
#define int long long
#define fi first
#define se second
#define sz(a) (int)((a).size())
#define all(a) (a).begin(), (a).end()
#define lsb(x) (x & (-x))
#define vi vector<int>
#define YES { cout << "YES" << endl; return; }
#define NO { cout << "NO" << endl; return; }
using ll = long long;
using pii = std::pair<int, int>;
const int NMAX = 1e6;
const int VMAX = 2e9;
using namespace std;
vector<array<int, 3>>qu[NMAX + 5];
int a[NMAX + 5], ans[NMAX + 5], n, q;
struct Seg {
int aint[4 * NMAX + 5];
void update(int pos, int val, int nod = 1, int st = 1, int dr = n) {
if (st == dr) {
aint[nod] = val;
return;
}
int m = (st + dr) >> 1;
if (pos <= m)
update(pos, val, 2 * nod, st, m);
else
update(pos, val, 2 * nod + 1, m + 1, dr);
aint[nod] = max(aint[2 * nod], aint[2 * nod + 1]);
}
int query(int l, int r, int nod = 1, int st = 1, int dr = n) {
if (st > r || dr < l) return INT_MIN;
if (l <= st && dr <= r) return aint[nod];
int m = (st + dr) >> 1;
return max(query(l, r, 2 * nod, st, m), query(l, r, 2 * nod + 1, m + 1, dr));
}
}aint;
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);
cin >> n >> q;
for (int i = 1; i <= n; ++i)
cin >> a[i];
for (int i = 1, l, r, k; i <= q; ++i) {
cin >> l >> r >> k;
qu[r].push_back({l, k, i});
}
stack<int>st;
for (int i = 1; i <= n; ++i) {
while (!st.empty() && a[i] >= a[st.top()])
st.pop();
if (!st.empty()) aint.update(st.top(), a[i] + a[st.top()]);
st.push(i);
for (auto &[l, k, idx] : qu[i])
ans[idx] = (aint.query(l, n) <= k);
}
for (int i = 1; i <= q; ++i)
cout << ans[i] << '\n';
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |