제출 #1156405

#제출 시각아이디문제언어결과실행 시간메모리
1156405SyedSohaib_123Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
738 ms327680 KiB
#include <bits/stdc++.h> using namespace std; #define append push_back #define int long long const int N=1e6+10,LG=21; int mod=998244353; int a[N],b[N],tree[N<<2],mn[N<<2],mx[N<<2],n,most,mxx; vector<int>seg[N<<2]; vector<int>v; void build(int l=1,int r=n,int s=1){ if(l==r){ tree[s]=0; mn[s]=mx[s]=a[l]; seg[s]={a[l]}; return; } int m=(l+r)>>1; build(l,m,s*2); build(m+1,r,s*2+1); mn[s]=min(mn[s*2],mn[s*2+1]); mx[s]=max(mx[s*2],mx[s*2+1]); tree[s]=max({tree[s*2],tree[s*2+1]}); if(mx[s*2]>=mn[s*2+1]) tree[s]=max(mx[s*2]+mn[s*2+1],tree[s]); seg[s]=seg[s*2]; for(auto i:seg[s*2+1]) seg[s].append(i); sort(seg[s].begin(),seg[s].end()); } void get(int a,int b,int l=1,int r=n,int s=1){ if(r<a or l>b) return; if(a<=l and r<=b){ if(mxx>seg[s][0]) most=max(most,mxx+*(--lower_bound(seg[s].begin(),seg[s].end(),mxx))); mxx=max(mxx,mx[s]); return; } int m=(l+r)>>1; get(a,b,l,m,s*2); get(a,b,m+1,r,s*2+1); } void solve(int tst){ int m; cin>>n>>m; for(int i=1;i<=n;i++){ cin>>a[i]; } build(); while(m--){ int a,b,c; cin>>a>>b>>c; most=mxx=0; v.clear(); get(a,b); cout<<(most<=c)<<endl; } } signed main(){ ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t = 1; // cin >> t; for(int i=1;i<=t;i++){ solve(i); // if(i!=t) cout<<endl; } }
#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...