This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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);
if(w[r-1]==intvMax){
return query(l,r-1,k,n);
}
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 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... |