This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#pragma GCC optimize("O3")
#pragma GCC target("popcnt")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define Waimai ios::sync_with_stdio(false),cin.tie(0)
#define FOR(x,a,b) for(int x=a,I=b;x<=I;x++)
#define pb emplace_back
#define F first
#define S second
const int SIZE = 1e6 + 5;
int n, q;
int a[SIZE], bit[SIZE];
bool ans[SIZE];
vector<pair<int, int>> st;
vector<tuple<int, int, int>> ask[SIZE];
void upd (int pos, int x) {
for (; pos; pos -= pos & -pos) bit[pos] = max (bit[pos], x);
}
int que (int pos) {
int re = 0;
for (; pos <= n; pos += pos & -pos) re = max (re, bit[pos]);
return re;
}
void solve() {
cin >> n >> q;
FOR (i, 1, n) cin >> a[i];
FOR (i, 1, q) {
int l, r, k;
cin >> l >> r >> k;
ask[r].pb (l, k, i);
}
FOR (i, 1, n) {
while (st.size() && a[i] >= st.back().S) st.pop_back();
if (st.size()) upd (st.back().F, st.back().S + a[i]);
st.pb (i, a[i]);
for (auto [l, k, id] : ask[i]) ans[id] = que (l) <= k;
}
FOR (i, 1, q) cout << ans[i] << '\n';
}
int main() {
Waimai;
solve();
}
# | 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... |