#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int mxN = 4e6+10;
int st[mxN], n;
vector<int> st1[mxN];
void build(int node, int l, int r, vector<int> &v) {
if(l == r) {
st[node] = v[l];
st1[node].push_back(v[l]);
return ;
}
int mid = (l+r)/2;
build(node*2, l, mid, v);
build(node*2+1, mid+1, r, v);
st[node] = max(st[node*2], st[node*2+1]);
int i = 0, j = 0;
while(i < (mid-l+1) && j < (r-mid)) {
if(st1[node*2][i] <= st1[node*2+1][j]) {
st1[node].push_back(st1[node*2][i++]);
}
else {
st1[node].push_back(st1[node*2+1][j++]);
}
}
while(i < (mid-l+1)) {
st1[node].push_back(st1[node*2][i++]);
}
while(j < (r-mid)) {
st1[node].push_back(st1[node*2+1][j++]);
}
}
int qry1(int node, int l, int r, int l1, int r1) {
if(l1 <= l && r <= r1) return st[node];
if(l1 > r || r1 < l) return -1;
int mid = (l+r)/2;
return max(qry1(node*2, l, mid, l1, r1),
qry1(node*2+1, mid+1, r, l1, r1));
}
bool qry(int node, int l, int r, int l1, int r1, int k) {
if(l1 <= l && r <= r1) {
int x = qry1(1, 0, n-1, l1, l-1);
if(x == -1) return false;
if(k-x >= x) return false;
auto it = lower_bound(st1[node].begin(), st1[node].end(), k-x);
if(it == st1[node].end()) return false;
if(*it >= x) return false;
return true;
}
if(l1 > r || r1 < l) return false;
int mid = (l+r)/2;
return (qry(node*2, l, mid, l1, r1, k) || qry(node*2+1, mid+1, r, l1, r1, k));
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
int q;
cin >> n >> q;
vector<int> v(n);
for(int i = 0; i < n; i++) {
cin >> v[i];
}
build(1, 0, n-1, v);
while(q--) {
int l, r, k;
cin >> l >> r >> k;
--l; --r;
bool ans = qry(1, 0, n-1, l, r, k);
cout << 1-(int)ans << '\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... |