Submission #1285019

#TimeUsernameProblemLanguageResultExecution timeMemory
1285019tntHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
829 ms42404 KiB
#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 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...