제출 #1156349

#제출 시각아이디문제언어결과실행 시간메모리
1156349SyedSohaib_123Hedgehog Daniyar and Algorithms (IZhO19_sortbooks)C++20
0 / 100
1584 ms59536 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; 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]; 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]); } 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){ v.append(s);most=max(most,tree[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=0; v.clear(); get(a,b); for(int i=0;i<v.size();i++){ for(int j=i+1;j<v.size();j++){ if(mx[v[i]]>=mn[v[j]]) most=max(most,mx[v[i]]+mn[v[j]]); } } 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...