Submission #169910

#TimeUsernameProblemLanguageResultExecution timeMemory
169910juggernautHedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++14
100 / 100
2355 ms142112 KiB
//Just try and the idea will come!
#include<bits/stdc++.h>
#define int long long int
using namespace std;
int n,m,pos[1000001],a[1000001],i,tree[4000001],l[1000001],r[1000001],k[1000001],ans[1000001];
vector<vector<int>>g(1000001);
void update(int v,int l,int r,int ind,int val){
    if(l==r){tree[v]=val;return;}
    int m=(l+r)>>1;
    if(ind<=m)update(v*2,l,m,ind,val);
    else update(v*2+1,m+1,r,ind,val);
    tree[v]=max(tree[v*2],tree[v*2+1]);
}
int get(int v,int l,int r,int ql,int qr){
    if(qr<l||r<ql)return 0;
    if(ql<=l&&r<=qr)return tree[v];
    int mid=(l+r)>>1;
    return max(get(v*2,l,mid,ql,qr),get(v*2+1,mid+1,r,ql,qr));
}
main(){
    scanf("%lld%lld",&n,&m);
    for(i=1;i<=n;i++){
        scanf("%lld",&a[i]);
        pos[i]=i-1;
        while(pos[i]&&a[pos[i]]<=a[i])pos[i]=pos[pos[i]];
    }
    for(i=1;i<=m;i++){
        scanf("%lld%lld%lld",&l[i],&r[i],&k[i]);
        g[r[i]].push_back(i);
    }
    for(i=1;i<=n;i++){
        if(pos[i])update(1,1,n,pos[i],a[i]+a[pos[i]]);
        for(int to:g[i])ans[to]=(get(1,1,n,l[to],r[to])<=k[to]?1:0);
    }
    for(i=1;i<=m;i++)printf("%lld\n",ans[i]);
}

Compilation message (stderr)

sortbooks.cpp:20:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
sortbooks.cpp: In function 'int main()':
sortbooks.cpp:21:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%lld%lld",&n,&m);
     ~~~~~^~~~~~~~~~~~~~~~~~
sortbooks.cpp:23:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld",&a[i]);
         ~~~~~^~~~~~~~~~~~~~
sortbooks.cpp:28:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%lld%lld%lld",&l[i],&r[i],&k[i]);
         ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...