Submission #1347488

#TimeUsernameProblemLanguageResultExecution timeMemory
1347488DangKhoizzzzHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
690 ms102328 KiB
#include <bits/stdc++.h>
#define int long long
#define arr3 array <int , 3>
#define pii pair <int , int>
#define fi first
#define se second
#define BIT(x , k) ((x >> k)&1)
#define MASK(x) (1 << x)

using namespace std;

const int maxn = 1e6 + 7;
const int INF = 1e18;

struct query{int l , r , k , id;};
vector <query> ask[maxn];

int st[maxn*4]; bool ans[maxn];
void update(int id , int l , int r , int pos , int val)
{
    if(r < pos || l > pos) return;
    if(l == r) {st[id] = max(st[id] , val); return;}
    int mid = (l+r)>>1;
    update(id*2 , l , mid , pos , val);
    update(id*2+1, mid+1 , r , pos , val);
    st[id] = max(st[id*2] , st[id*2+1]);
}
int get(int id , int l , int r , int u , int v)
{
    if(r < u || l > v) return  -INF;
    if(u <= l && r <= v) return st[id];
    int mid = (l+r)>>1;
    return max(get(id*2 , l , mid , u , v) , get(id*2+1 , mid+1 , r , u , v));
}

int n , a[maxn] , q , L[maxn];

void solve()
{
    cin >> n >> q;
    stack <int> st;
    a[0] = INF;
    st.push(0);
    for(int i = 1; i <= n; i++) 
    {
        cin >> a[i];
        while(a[st.top()] <= a[i]) st.pop();
        L[i] = st.top();
        st.push(i);
    }
    for(int i = 1; i <= q; i++)
    {
        int l , r , k; cin >> l >> r >> k;
        ask[r].push_back({l , r , k , i});
    }
    for(int i = 1; i <= n; i++)
    {
        update(1 , 0 , n , L[i] , a[i] + a[L[i]]);
        for(auto [l , r , k , id]: ask[i]) ans[id] = (bool)(get(1 , 0 , n , l , r) <= k);
    }
    for(int i = 1; i <= q; i++) cout << ans[i] << '\n';
}

signed main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr); cout.tie(nullptr);
    solve();
    return 0;
}
#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...