#include <bits/stdc++.h>
using namespace std;
#define pb push_back
#define ll long long
#define s second
#define f first
#define int long long
#define all(v) v.begin(),v.end()
const long long inf = 2e9 + 7;
const int N = 1e6 + 10;
vector <int> last(N,-inf);
int t[N * 4];
int d[N];
void build(int u,int l,int r){
if(l == r){
t[u] = d[l];
return;
}
int mid = (l + r) / 2;
build(u * 2,l,mid),build(u * 2 + 1,mid + 1,r);
t[u] = max(t[u * 2],t[u * 2 + 1]);
}
int get(int u,int l,int r,int lx,int rx){
if(l >= lx && r <= rx) return t[u];
else if(l > rx || r < lx) return 0;
int mid = (l + r) / 2;
return max(get(u * 2,l,mid,lx,rx),get(u * 2 + 1,mid + 1,r,lx,rx));
}
void solve(){
int n,m;
cin >> n >> m;
int a[n + 1];
stack <int> st;
for(int i = 1; i <= n;i++){
cin >> a[i];
while(st.size() > 0 && a[st.top()] <= a[i]){
st.pop();
}
if(st.size() > 0) last[i] = st.top();
if(last[i] != -inf) d[last[i]] = a[i] + a[last[i]];
st.push(i);
}
build(1,1,n);
while(m--){
int l,r,k;
cin >> l >> r >> k;
int x = get(1,1,n,l,r);
if(x <= k) cout << 1 << '\n';
else cout << 0 << '\n';
}
}
signed main(){
ios_base::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
//freopen("promote.in", "r", stdin);
//freopen("promote.out", "w", stdout);
int t1 = 1;
while(t1--){
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... |