Submission #1176231

#TimeUsernameProblemLanguageResultExecution timeMemory
1176231emil_aliyevvHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
100 / 100
2100 ms113808 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define ull unsigned long long
#define vll vector<ll>
#define pll pair<ll,ll>
#define pb push_back
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()

template<typename T>
using minpq = priority_queue<T, vector<T>, greater<T>>;
template<typename T>
using maxpq = priority_queue<T, vector<T>, less<T>>;

void input(vll&q)
{
    for(auto&i:q)cin>>i;
}
void pyn(bool x)
{
    cout<<(x?"YES":"NO")<<endl;
}
void pYN(bool x)
{
    cout<<(x?"Yes":"No")<<endl;
}
void pAB(bool x)
{
    cout<<(x?"Alice":"Bob")<<endl;
}
const ll N=1e6+10;
vector<vll> query[N];
ll fen[N],ans[N];
ll n,m;
void update(ll ind,ll val)
{
    ind++;
    while(ind>0)
    {
        fen[ind]=max(fen[ind],val);
        ind-=(ind&-ind);
    }
}
ll get(ll i)
{
    i++;
    ll ans=0;
    while(i<=n)
    {
        ans=max(ans,fen[i]);
        i+=(i&-i);
    }
    return ans;
}
void solve()
{
    cin>>n>>m;
    vll a(n);
    input(a);
    vll bp;
    for(int i=0;i<m;i++)
    {
        ll l,r,k;
        cin>>l>>r>>k;
        l--;
        r--;
        query[r].push_back({l,k,i});
    }
    for(ll l=0;l<n;l++)
    {
        while(bp.size()>0 and a[bp.back()]<=a[l])
        {
            bp.pop_back();
        }
        if(bp.size())
        {
            update(bp.back(),a[bp.back()]+a[l]);
        }
        for(auto lp:query[l])
        {
            ans[lp[2]]=(get(lp[0])<=lp[1]);
        }
        bp.push_back(l);
    }
    for(int i=0;i<m;i++)cout<<ans[i]<<endl;
}

int main()
{
    int t=1;
    // cin>>t;
    while(t--)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...