제출 #170831

#제출 시각아이디문제언어결과실행 시간메모리
170831bgspartanHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
0 / 100
3058 ms83880 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxN=1000001,INF=9999999999999;
ll w[maxN],ans[maxN];
ll segmMin[maxN*8],segmMax[maxN*8];
ll findMax(ll l,ll r,ll iL,ll iR,ll idx){

    if(l>iR or iL>r){
        return 0;
    }else{
        if(l<=iL and r>=iR){
            return segmMax[idx];
        }else{
            ll ans1,ans2;
            ans1=findMax(l,r,iL,(iL+iR)/2,idx*2);
            ans2=findMax(l,r,(iL+iR)/2+1,iR,idx*2+1);
            return max(ans1,ans2);
        }
    }
}
ll findMin(ll l,ll r,ll iL,ll iR,ll idx){
    if(l>iR or iL>r){
        return INF;
    }else{
        if(l<=iL and r>=iR){
            return segmMin[idx];
        }else{
            ll ans1,ans2;
            ans1=findMin(l,r,iL,(iL+iR)/2,idx*2);
            ans2=findMin(l,r,(iL+iR)/2+1,iR,idx*2+1);
            return min(ans1,ans2);
        }
    }
}
ll query(ll l,ll r,ll k,ll n){
    if(l==r){
      return 1;
    }
    ll intvMax=0,intvMin=0;
    intvMax=findMax(l,r,1,n,1);
    intvMin=findMin(l,r,1,n,1);
    //cout<<intvMin<<" "<<intvMax<<"\n";
    if(intvMax+intvMin<=k){
        return 1;
    }else{
        if(w[r-1]!=intvMax){
            return 0;
        }else{
            return query(l,r-1,k,n);
        }
    }
}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
ll n,m,bp=1;
cin>>n>>m;
for(int i=0;i<n;i++){
    cin>>w[i];
}
while(bp<n){
    bp*=2;
}
for(int i=bp;i<=bp*2-1;i++){
        if(i-bp<n){
        segmMax[i]=w[i-bp];
        segmMin[i]=w[i-bp];
        }else{
         segmMax[i]=0;
         segmMin[i]=INF;
        }
}
for(int i=bp-1;i>=1;i--){
    segmMax[i]=max(segmMax[2*i],segmMax[2*i+1]);
    segmMin[i]=min(segmMin[2*i],segmMin[2*i+1]);

}
for(int i=0;i<m;i++){
    ll l,r,k;
    cin>>l>>r>>k;
    ans[i]=query(l,r,k,bp);
}
for(int i=0;i<m;i++){
    cout<<ans[i]<<"\n";
}
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...